in
PostgreSQL
- 25 9月, 2016
distinct onで重複なしのレコードを取得
postgres独自のdistinct on 構文について
distict onを用いることで指定したカラムごとの最初に出てきた最初のレコードを持ってくることができます。
結果見た方が分かりやすいので下記ご覧ください!
【通常】
select * from testm order by data1,key asc
| key | data1 | data2 |
|---|---|---|
| 1 | 2 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 2 |
| 4 | 3 | 1 |
| 5 | 5 | 2 |
| 6 | 5 | 1 |
| 7 | 8 | 1 |
| 8 | 8 | 2 |
【distinct on】
select distinct on (data1) data1, data2 from testm order by data1, key asc ;
| data1 | data2 |
|---|---|
| 2 | 1 |
| 3 | 2 |
| 5 | 2 |
| 8 | 1 |


