DISTINCT ON
>
またはあなたの友達です。これが正しいの解決策です 構文:
SELECT a.id, b.updated, b.col1, b.col2
FROM table_a as a
LEFT JOIN (
SELECT DISTINCT ON (table_a_id)
table_a_id, updated, col1, col2
FROM table_b
ORDER BY table_a_id, updated DESC
) b ON a.id = b.table_a_id;
または、行全体を取得するには table_b
から :
SELECT a.id, b.*
FROM table_a as a
LEFT JOIN (
SELECT DISTINCT ON (table_a_id)
*
FROM table_b
ORDER BY table_a_id, updated DESC
) b ON a.id = b.table_a_id;
この手法の詳細な説明と、この密接に関連する質問の下での代替ソリューション:
各GROUPBYグループの最初の行を選択しますか?