MyBaitsPlus page的records.size和total不一致

select a.*, c.depart_name as org_code_txt from sys_user a
left join sys_user_depart b on b.user_id = a.id
left join sys_depart c on b.dep_id = c.id
left join sys_user_tenant ut on ut.user_id = a.id
where a.del_flag = 0

由于一个user可能与多个depart关联,所以同一个userid可能存在多行数据,在这里使用的是left join,而mybatis看到了left join,使用count计算total的时候用的是如下的sql

SELECT COUNT(*) FROM sys_user a WHERE a.del_flag = 0

而且是,在select语句中同一个userid,org_code_text不同也会查询出不同的数据,上述查询count的sql自然是错误的,可以加一个distinct更改sql如下

select distinct a.*, c.depart_name as org_code_txt from sys_user a
left join sys_user_depart b on b.user_id = a.id
left join sys_depart c on b.dep_id = c.id
left join sys_user_tenant ut on ut.user_id = a.id
where a.del_flag = 0

此时查询count total的sql变成了

SELECT COUNT(*) FROM 
(SELECT DISTINCT a.*, c.depart_name AS org_code_txt FROM sys_user a 
LEFT JOIN sys_user_depart b ON b.user_id = a.id 
LEFT JOIN sys_depart c ON b.dep_id = c.id 
LEFT JOIN sys_user_tenant ut 
ON ut.user_id = a.id WHERE a.del_flag = 0) TOTAL

大功告成,此时records.size和total就一致了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值