情景:
我有一个名为snippets的表,有5行, 我有一个名为revisions的表,有15行
我想要做的是获取所有代码段,其中包含user_id
修订版snippet_id
。
我有以下mysql查询:
SELECT DISTINCT * FROM "snippets"
INNER JOIN "revisions"
ON "user_id" = "1"
AND "snippet_id" = "snippets.id"
GROUP BY "snippets"."id"
ORDER BY "created_at"
这应该显示revisions.user_id = 1
所有的片段。问题是,为什么我的计数不同?该查询的总结果为 5 ,但是当我这样做时:
SELECT COUNT(distinct snippets.id) FROM "snippets"
INNER JOIN "revisions"
ON "user_id" = "1"
AND "snippet_id" = "snippets.id"
GROUP BY "snippets"."id";
结果是 1 1 1 1 1
答案 0 :(得分:2)
DISTINCT COUNT(*)
没有意义。可能你正在寻找COUNT(DISTINCT someotherfield)
而不是它。由于COUNT(*)
包含NULL
个值的任何行。
更新:* 请勿COUNT
您在GROUP BY
子句中使用的相同字段。这就是你得到结果1 1 1 1 1
的原因。在这种情况下,请删除GROUP BY "snippets"."id"
子句。