Mybatis一对多多对一MySQL LEFT JOIN分页方案

在项目中遇到Mybatis一对多多对一查询时,使用LEFT JOIN结合LIMIT进行分页出现记录不足的问题。通过引入用户变量的方式,可以解决LEFT JOIN后分页不准确的难题,确保分页基于主表记录数进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中遇到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,
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值