jfinal中Db.paginate使用了UNION,出现了sql异常-The used SELECT statements have a different number of columns

Db.paginate(1, 5,"SELECT" 
+ " meeting_apply_phone as phone,"
+ "meeting_apply_name as name, "
+ "meeting_apply_date as date ",
" FROM tb_meeting_my_info "
+ "WHERE meeting_id = '862018072610121345692' "
+ "and meeting_user_id='102018072611183291837' "
+ " UNION "
+ "SELECT meeting_apply_phone as phone, "
+ "meeting_apply_name as name, "
+ "meeting_apply_date as date "
+ "FROM tb_meeting_my_info "
+ "WHERE meeting_id = '862018072610121345692' "
+ "and promotion_user_id in "
+ (SELECT   meeting_user_id	"
+ " FROM tb_meeting_my_info WHERE  "
+ "meeting_id = '862018072610121345692' "
+ "and promotion_user_id = '102018072611183291837') "+ "");

这个是我做的一个分页查询,在项目中运行一直报The used SELECT statements have a different number of columns,但是在navicat上运行时成功的,请问这是什么原因呀

评论区

lyh061619

2018-07-28 16:17

用的是druid连接池吧?如果是,druid默认配置是不支持union,在配置jdbc后面加这段:&allowMultiQueries=true

天朝子民

2018-09-18 19:49

我也遇到了这个问题,使用Db.find(Db.getSqlPara("xx"))不报错,使用Db.paginate(0,10,Db.getSqlPara("xx"))报The used SELECT statements have a different number of columns,看日志,是执行select count(*) from 报的错。

天朝子民

2018-09-18 19:49

@lyh061619 我尝试了下,不是这个原因

天朝子民

2018-09-18 19:55

解决了~~在最外层在包裹一层即可:
https://stackoverflow.com/questions/11731655/how-to-do-a-count-on-a-union-query

热门反馈

扫码入社