Tôi có hai bảng được gọi record
và 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 id
và record_id
. Tôi muốn nhận tất cả các record
mục của record_history
dữ 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ó ts
mụ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