カラムA、B、Cが同じ値のレコード数を出力するSQL
もっとちゃんとした書き方があるとおもうのだけど、パッと思いついたのがこれだった。
もし、他のSQLの書き方があれば教えてくださいm(_ _)m
データ構造例
テーブル名:demos
id | A | B | C | D | E | ||||||
1 | hoge | fuga | NULL | mysql | postgres | ||||||
2 | baz | hoge | foo | bar | mysql | ||||||
3 | hoge | fuga | NULL | foo | bar | ||||||
4 | fuga | baz | foo | NULL | mysql | ||||||
5 | fuga | baz | foo | NULL | mysql |
SQL
SELECT CONCAT(A, B, IFNULL(C, 'null')) unique_id, COUNT(CONCAT(A, B, IFNULL(C, 'null'))) unique_id_count FROM demos GROUP BY unique_id HAVING unique_id_count > 1 ; +--------------+------------------+ | unique_id | unique_id_count | +--------------+------------------+ | hogefuganull | 2 | +--------------+------------------+ | fugabazfoo | 2 | +--------------+------------------+
追記
group by を使えばいけましたね・・・。
修正SQL
SELECT COUNT(*) unique_id_count FROM demos GROUP BY A, B, C HAVING unique_id_count > 1 ;