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

結果是:

id endorseCount replyCount
090bf03723fd4abba56dfecfa69ac410 9 9

然後我在執行

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語句都寫的少了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章