SQL:如何在SELECT查询结果中添加列?

时间:2011-10-27 13:43:24

标签: sql select

通常我们会在SQL查询中选择字段。 e.g。

SELECT A.id FROM Member A

但是如果我想对齐哪一个元素对应于另一个选定字段呢? 例如,我想从成员表中选择成员ID,以及计算成员在其他表的元组中出现的次数的COUNT

那么如何使COUNT列与选择结果一致?

3 个答案:

答案 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;