DISTINCT ON
hoặc là bạn của bạn. Đây là một giải pháp với đúng cú pháp:
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;
Hoặc, để có được toàn bộ hàng từ 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;
Giải thích chi tiết cho kỹ thuật này cũng như các giải pháp thay thế cho câu hỏi có liên quan chặt chẽ này:
Chọn hàng đầu tiên trong mỗi GROUP BY nhóm?