Tôi có hai bảng được gọi recordvà record_history. Đối với mỗi bản ghi, có thể có nhiều hơn một lịch sử. Họ có thể được tham gia bởi idvà record_id. Tôi muốn nhận tất cả các recordmục của record_historydữ liệu gần đây . Tôi đã tạo truy vấn như,
SELECT rec.id, rec.name, rech1.data AS last_history_data
FROM record rec
LEFT OUTER JOIN record_history rech1 ON (rec.id = rech1.record_id)
LEFT OUTER JOIN record_history rech2 ON (rec.id = rech2.record_id AND rech2.ts > rech1.ts)
WHERE rech2.id IS NULL
ORDER BY rec.id DESC
Ở đây, tôi nhận được một cái mới nhất bởi ts. Điều này hoạt động miễn là không có tsmục trùng lặp . Nếu dấu thời gian gần đây được lặp lại record_history, truy vấn này trả về nhiều hơn một hàng cho một bản ghi. Làm thế nào chúng ta có thể áp dụng giới hạn ở đây trên liên kết bên trái để hạn chế các hàng trùng lặp?
rech2được sử dụng ở đây chọn record_history đầu tiên và nhu cầu của tôi cho rech2 là phảiNULL