废话不多说直接贴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语句都写的少了