🦁

HAVING count()で重複したデータを1として取得する方法(自分用メモ)

2023/01/12に公開

やりたいこと

以下のような4件のレコードが入ったテーブル(sample)があると仮定して、typeが3種類だけのレコード(A,B,Cのような)を取得したい。

id type
1 A
2 A
3 B
4 C

試したこと

以下の方法だとレコード件数の4件が取れてしまう。

SELECT id
FROM sample
GROUP BY id
HAVING count(type) = 3

解決した方法

distinct でtypeの重複を削除してあげる

SELECT id
FROM sample
GROUP BY id
HAVING count(distinct type) = 3

Discussion