项目中遇到Mybatis需要写一对多多对一的翻页,用LEFT JOIN之后再用LIMIT记录数是不足的。因为LEFT JOIN后记录数大于主表的记录数了。所以LIMIT出来的记录是少的,不足一页。后来我使用了用户变量的方式,解决了这个问题。上代码:
select t.id, t2.* from table1 t left join table2 t2 = t1.id = t2.t_id limit 0,10
这样查,其实总共table1的记录没有对应10条。改为下面的方式
SELECT *
FROM (
SELECT
if(@tid = t.id, @rownum := @rownum, @rownum := @rownum + 1) rn,
@tid := t.id,