廢話不多說直接貼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語句都寫的少了