通常我们会在SQL查询中选择字段。 e.g。
SELECT A.id FROM Member A
但是如果我想对齐哪一个元素对应于另一个选定字段呢? 例如,我想从成员表中选择成员ID,以及计算成员在其他表的元组中出现的次数的COUNT
那么如何使COUNT列与选择结果一致?
答案 0 :(得分:5)
如果我理解正确,这就是你想要的:
SELECT A.id, count(B.MemberID)
FROM Member A
LEFT JOIN TableB B on A.id = B.MemberID
group by A.id
LEFT JOIN
将在A中包含在B中没有任何相应记录的记录。此外,COUNT
仅计算非空值,因此您需要将其与B.MemberID
一起使用。这样,A中没有任何相应记录的记录的计数将为0,因为B.MemberID
将为NULL
。
答案 1 :(得分:2)
我同意@Adrian的解决方案,但如果原始SELECT列表中有许多列,则它们都必须在GROUP BY中列出。我的意思是这样的:
SELECT
A.id,
A.name,
A.whatever,
...
COUNT(B.member_id)
FROM Member A
LEFT JOIN Member_Something B ON A.id = B.member_id
GROUP BY
A.id,
A.name,
A.whatever,
...
并不总是方便,尤其是当列实际是表达式时。你可以采取另一种方法:
SELECT
A.id,
A.name,
A.whatever,
...
COALESCE(B.member_count, 0)
FROM Member A
LEFT JOIN (
SELECT member_id, COUNT(*) AS member_count
FROM Member_Something
GROUP BY member_id
) B ON A.id = B.member_id
答案 2 :(得分:0)
select member_id, count(*)
from table
group by member_id;