"Lân cận" khá mờ.
Để tham gia table2 ở đâu timee nằm trong vòng 10 giây của dateee trong tương lai:
SELECT *
FROM table1 t1
LEFT JOIN table2 t2 ON t2.timee BETWEEN t1.dateee
AND t1.dateee + interval '10 sec';
-
LEFT JOINgiữ các hàng từtable1trong kết quả, ngay cả khi không khớp trongtable2. -
Có thể có nhiều kết quả phù hợp, để mỗi hàng từ bảng cơ sở có thể được trả về nhiều lần theo nhiều cách kết hợp khác nhau.
Thay thế
Để nối từng hàng trong table1 vào hàng có dấu thời gian cao hơn tiếp theo. Chính xác một hàng trong kết quả mỗi hàng trên table1 :
SELECT *
FROM table1 t1
LEFT JOIN LATERAL (
SELECT *
FROM table2 t2
WHERE t2.timee >= t1.dateee
ORDER BY t2.timee
LIMIT 1
) ON TRUE;
Chỉ mục trên (timee) rất cần thiết cho hiệu suất.