sql语句分页查询,求助!結果集不全。

select * FROM(SELECT`share`.id, `share`.projectId, `share`.title, `share`.content, `share`.createAt, `share`.clickCount, `share`.report, `share`.likeCount, `share`.favoriteCount, account.nickName, account.avatar, `share`.accountId FROM`share`, account WHERE`share`.accountId = account.id) s LEFT JOIN(SELECT max(share_reply.createAt) AS createTime, share_reply.shareId, account.nickName AS replyNickName, account.id AS replyAccountId FROM share_reply LEFT JOIN account ON account.id = share_reply.accountId GROUP BY share_reply.shareId) sr ON s.id = sr.shareId WHERE s.projectId IN (?)

这个语句直接跑能查询全部记录,可是用分页进行查询就不能查询全部记录了。

Page<Share> sharePage = dao.paginate(i, j, "select *","FROM(SELECT`share`.id, `share`.projectId, `share`.title, `share`.content, `share`.createAt, `share`.clickCount, `share`.report, `share`.likeCount, `share`.favoriteCount, account.nickName, account.avatar, `share`.accountId FROM`share`, account WHERE`share`.accountId = account.id) s LEFT JOIN(SELECT max(share_reply.createAt) AS createTime, share_reply.shareId, account.nickName AS replyNickName, account.id AS replyAccountId FROM share_reply LEFT JOIN account ON account.id = share_reply.accountId GROUP BY share_reply.shareId) sr ON s.id = sr.shareId WHERE s.projectId IN (?)",paraToInt);


请问这个怎么办呢?

如果用jfinal 中的 find查詢,能查出正確的記錄數,8條。但用分頁查詢,居然只有3條。


评论区

JFinal

2018-12-07 12:25

最外层有 group by , 在 i,j 这两个参数后面要添加 group by 参数:
dao.paginate(i , j , true, ...);

fmpoffice

2018-12-07 14:20

@JFinal 老大哥,感覺還是不行,感覺是: IN (?) 不能用。 改用or就可以了

fmpoffice

2018-12-07 14:55

@JFinal 找到问题所在了,?默认是 给我把值添加了''号,这样如果我传入(?),结果是:('10,8,9'),导致查询有问题。请问有什么办法删掉''号呢?

邶风

2018-12-07 16:12

不用占位符,直接拼进去好了

邶风

2018-12-07 16:14

对了,试试用sql模版管理下sql呢 http://www.jfinal.com/doc/5-13

fmpoffice

2018-12-07 17:21

@邶风 @JFinal 谢谢,都解决了~!用上了sql模板,把参数遍历进去了!~参考:
http://www.jfinal.com/feedback/1139

热门反馈

扫码入社