SQL:SELECTクエリの結果に列を追加する方法は?

通常は、SQLクエリでフィールドを選択します。例えば

SELECT A.id FROM Member A

しかし、要素が他の選択されたフィールドに対応する列を揃えたい場合、どうすればよいでしょうか? たとえば、メンバテーブルからメンバIDを選択し、メンバが他のテーブルのタプルに何回出現するかを数えるCOUNT

では、選択結果と合わせてCOUNT列を作成するにはどうすればよいですか?

1
追加された 編集された
ビュー: 1

3 答え

私があなたを正しく理解したら、これはあなたが望むものです:

SELECT A.id, count(B.MemberID) 
FROM Member A 
LEFT JOIN TableB B on A.id = B.MemberID
group by A.id

COUNT はnull以外の値を数えるだけなので、 COUNT は< code> B.MemberID 。このようにして、 B.MemberIDNULL になるので、Bに対応するレコードを持たないAレコードの数は0になります。

5
追加された

@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
追加された
@ DanAndrews:ええ、Ctrl-CとCtrl-Vはこれまでずっと素晴らしい助けになっています。 ;)
追加された 著者 Andriy M,
+1次のレベルに引き上げるため
追加された 著者 Adrian Carneiro,
@ Andriy:私はあなたについて知らないけど、CTRL-CとCTRL-Vはキーボードで私のOS上で動作します:D真剣に、良い点。
追加された 著者 SQLMason,
select member_id, count(*)
from table
group by member_id;
0
追加された
あなたが0を気にしなかったら、あなたは正しいでしょう。
追加された 著者 SQLMason,
私はしませんが、あなたが正しい、誰かかもしれません;-)
追加された 著者 Lewis Conner,