1

users次のようなテーブルがあります。

id user refid
1  a    null
2  b    1
3  c    1
4  d    2
5  f    3

ユーザーを選択し、ID でグループ化し、各ユーザーの各 refid のカウント数を指定する必要があります。たとえば、

id    user count
1      a     2
2      b     1
3      c     1
4      d     0
5      4     0

これは私が試したことです:

SELECT u1 . id,u1 . user , count( u1.id ) count FROM users u1 
LEFT JOIN users u2 ON u1.id = u2.refid GROUP BY u1.id

返す

id    user count
1      a     2
2      b     1
3      c     1

IDがrefidとして使用されていない両方をmysqlに返すにはどうすればよいですか?

4

2 に答える 2

1

SUM(IF(...,0,1))特定のプロパティを持つ行のみをカウントするために使用できます。出力で最後の 2 行が欠落している理由はわかりませんが、次のように動作するはずです。

SELECT u1.id, u1.user, SUM(IF(u2.id IS NULL,0,1)) count
FROM users u1 
LEFT JOIN users u2 ON u1.id=u2.refid
GROUP BY u1.id
于 2013-10-05T11:44:51.903 に答える