jfinal 3.3 分页查询问题

现在有这样的SQL:
SELECT *
FROM film f
  LEFT JOIN film_release_date ON f.id = film_release_date.film_id
WHERE f.id IN (
  SELECT film_id
  FROM film_release_date
  WHERE release_date = '2017-09-01'
  GROUP BY film_id
)
GROUP BY f.id
ORDER BY (f.film_douban_people + f.film_imdb_people) DESC

分页查询时会生成这样的语句:
SELECT count(*)
FROM film f LEFT JOIN film_release_date ON f.id = film_release_date.film_id
WHERE f.id IN (SELECT film_id
               FROM film_release_date
               WHERE release_date = ?
               GROUP BY film_id)
GROUP BY f.id + f.film_imdb_people) DESC


查询代码后发现是Model的第337行查询总数的SQL错误


PS:发表这个反馈,样式和部分内容总是丢失。。。。。


评论区

JFinal

2017-12-13 18:37

带有复杂 order by 的用一下 paginateByFullSql 即可,看一下 jfinal 手册有关这个方法的说明

badouyuren

2017-12-13 18:54

@JFinal好的,谢谢啦。不过感觉这样不是很方便呀,一个SQL可能刚开始很简单,用paginate,没啥问题。后来越来越复杂,依旧用的是paginate,想不到要去用 paginateByFullSql。然后就导致报错了,再去改。。。

JFinal

2017-12-13 22:18

@badouyuren 只要不是复杂 order by 就没事,用正则去除复杂 order by 性能会下降一个数量级,权衡后引入 paginateByFullSql

大部分 sql 的 order by 都能搞定,一般没事

badouyuren

2017-12-14 10:43

@JFinal 我每次反馈的问题都出在分页这一块,问题都让我遇见了。。。

爸爸

2017-12-14 17:45

select count(*) 在没有条件语句的情况下 返回分页 就回操作大表 性能问题就出来了 怎么解决

热门反馈

扫码入社