LoginSignup
1
0

More than 3 years have passed since last update.

【重複行排除_MySQL,PostgreSQL,Oracleの違い】指定したカラム以外他のカラム情報も欲しい

Last updated at Posted at 2020-05-23

・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 名前)

ROWIDについて

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0