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 |