SQLの話です。
使ったもの → Postgres
ここにこんなテーブルがあります。
# SELECT * FROM duplication_table;
id | sub_id | name | price | description
—-+——–+——————+——-+———————-
1 | 1 | 普通の牛乳 | 190 | 生乳100%
1 | 2 | 濃厚な牛乳 | 240 | 一番好きなやつ
1 | 3 | 生乳30%の牛乳 | 180 |
2 | 1 | スーパーなカップ | 120 | 結局これ買っちゃう
2 | 2 | ハーゲンなダッツ | 250 | たまに買っちゃう
3 | 1 | ハッピーなターン | 150 | 粉が多いのもあるよね
Q.重複idは排除してidを知りたい時ってどうしてますか?
A.DISTINCTですよね!
# SELECT DISTINCT(id) FROM duplication_table;
id
—-
1
3
2
まあ、これはよく見る。
Q.「他のカラム情報も欲しいんや!」って時ありません?
A.朗報です!!DISTINCT ONってのがあります!
# SELECT DISTINCT ON(id)* FROM duplication_table;
id | sub_id | name | price | description
—-+——–+——————+——-+———————-
1 | 1 | 普通の牛乳 | 190 | 生乳100%
2 | 1 | スーパーなカップ | 120 | 結局これ買っちゃう
3 | 1 | ハッピーなターン | 150 | 粉が多いのもあるよね
ほらね?けど、これどの条件で絞ってるんだっけ?
謎ですね。sub_idっぽいけど。。。。。
id中の最小priceを残して、重複排除
# SELECT DISTINCT ON(id)* FROM duplication_table ORDER BY id,price;
id | sub_id | name | price | description
—-+——–+——————+——-+———————-
1 | 3 | 生乳30%の牛乳 | 180 |
2 | 1 | スーパーなカップ | 120 | 結局これ買っちゃう
3 | 1 | ハッピーなターン | 150 | 粉が多いのもあるよね
こうすれば全カラム取得できました!!!
nice!!1