mysql 多表查询数据重复的问题

废话不多说直接贴SQL语句

SELECT
	moments.id AS id,
	COUNT(endorse.id) AS endorseCount,
	COUNT(reply.id) AS replyCount
FROM
	jq_circle_moments moments
LEFT JOIN jq_circle_endorse endorse ON moments.id = endorse.moments_id
LEFT JOIN jq_circle_reply reply ON moments.id = reply.moments_id
WHERE
	moments.`status` = "10B"
AND moments.id = "090bf03723fd4abba56dfecfa69ac410"
GROUP BY
	moments.id
LIMIT 10

结果是:

idendorseCountreplyCount
090bf03723fd4abba56dfecfa69ac41099

然后我在执行

select COUNT(id) FROM jq_circle_endorse where moments_id = "090bf03723fd4abba56dfecfa69ac410";

select COUNT(id) FROM jq_circle_reply where moments_id = "090bf03723fd4abba56dfecfa69ac410";

分别结果是:

COUNT(id)
3
COUNT(id)
3

然后我就纳闷了,为什么应该是9应该是3,后面灵机一动加了个去重的关键字DISTINCT

SELECT
	moments.id AS id,
	COUNT(DISTINCT endorse.id) AS endorseCount,
	COUNT(DISTINCT reply.id) AS replyCount
FROM
	jq_circle_moments moments
LEFT JOIN jq_circle_endorse endorse ON moments.id = endorse.moments_id
LEFT JOIN jq_circle_reply reply ON moments.id = reply.moments_id
WHERE
	moments.`status` = "10B"
AND moments.id = "090bf03723fd4abba56dfecfa69ac410"
GROUP BY
	moments.id
LIMIT 10

自从有了mybatis-plus SQL语句都写的少了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值