table1
| id | val |
|---|---|
| 101 | a |
| 102 | b |
| 103 | c |
table2
| id | num |
|---|---|
| 101 | 1 |
| 101 | 2 |
| 102 | 5 |
| 102 | 3 |
| 102 | 1 |
| 103 | 3 |
| 103 | 7 |
| 103 | 5 |
table1 と table2 を結合。table2 は、num の最大値を持つレコードを id 毎に distinct する。
SELECT
teble1.id,
teble1.val,
temp.num
FROM
(SELECT DISTINCT on (id)
id, num
FROM
teble2
ORDER BY
id, num desc
) temp
left join teble1 using (id)
結果
| id | val | num |
|---|---|---|
| 101 | a | 2 |
| 102 | b | 5 |
| 103 | c | 7 |
pstgresql8.1.2 にて検証