通常は、SQLクエリでフィールドを選択します。例えばSQL:SELECTクエリ結果に列を追加する方法は?
SELECT A.id FROM Member A
しかし、選択した他のフィールドに対応する要素の列を揃えたい場合はどうすればよいですか? たとえば、メンバテーブルからメンバIDを選択し、メンバが他のテーブルのタプルに何回出現するかをカウントするCOUNT
どのようにCOUNT列をselect結果?
通常は、SQLクエリでフィールドを選択します。例えばSQL:SELECTクエリ結果に列を追加する方法は?
SELECT A.id FROM Member A
しかし、選択した他のフィールドに対応する要素の列を揃えたい場合はどうすればよいですか? たとえば、メンバテーブルからメンバIDを選択し、メンバが他のテーブルのタプルに何回出現するかをカウントするCOUNT
どのようにCOUNT列をselect結果?
select member_id, count(*)
from table
group by member_id;
私が正しくあなたを理解している場合、これはあなたが望むものである:
SELECT A.id, count(B.MemberID)
FROM Member A
LEFT JOIN TableB B on A.id = B.MemberID
group by A.id
LEFT JOIN
はまた、Bのいずれかの対応するレコードを持っていないのレコードが含まれます、COUNT
のみ非カウントnull値なので、B.MemberID
と一緒に使用する必要があります。このようにして、Bの対応するレコードを持たないAのレコードの数は、B.MemberID
がNULL
になるため、0になります。
私は@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
+1次のレベルへ進むために –
@Andriy:あなたについてはわかりませんが、CTRL-CとCTRL-Vは私の私のキーボードでOS:真剣に、良い点。 – SQLMason
@DanAndrews:うん、Ctrl-CとCtrl-Vはこれまでずっと素晴らしい助けになっています。 ;) –
0を気にしなかった場合は、正しいと思います。 – SQLMason
私はそうではありませんが、あなたの人は正しいかもしれません;-) – Jack