###・SELECT DISTINCTでは重複判定に指定したカラム項目しか返されない
####サンプルテーブル
ID | 名前 | 趣味 | 場所 |
---|---|---|---|
101 | 田中 | 映画 | 映画館 |
102 | 田中 | 漫画 | 本屋 |
103 | 田中 | 水泳 | 体育館 |
104 | 田中 | 散歩 | 公園 |
105 | 佐藤 | 映画 | 映画館 |
106 | 佐藤 | 水泳 | 体育館 |
107 | 清水 | 漫画 | 本屋 |
108 | 清水 | 水泳 | 体育館 |
109 | 清水 | 散歩 | 公園 |
SELECT DISTINCT 名前 FROM サンプルテーブル
とすると、返されるのは名前カラムだけです。
名前 |
---|
田中 |
佐藤 |
清水 |
###・重複判定に指定したカラム以外のカラムも取得するSQL
####サンプルテーブルから取得したい情報
ID | 名前 | 趣味 | 場所 |
---|---|---|---|
101 | 田中 | 映画 | 映画館 |
105 | 佐藤 | 映画 | 映画館 |
107 | 清水 | 漫画 | 本屋 |
MySQL、PostgreSQL、Oracle、それぞれやり方が違います。
####MySQL
SELECT * FROM サンプルテーブル GROUP BY 名前
####PostgreSQL
SELECT DISTINCT ON(名前)* FROM サンプルテーブル
####Oracle
SELECT * FROM サンプルテーブル WHERE ROWID IN (select min(ROWID) from サンプルテーブル GROUP BY 名前)