"Terdekat" agak kabur.
Untuk bergabung dengan table2 dimana timee terletak dalam 10 detik dari dateee di masa depan:
SELECT *
FROM table1 t1
LEFT JOIN table2 t2 ON t2.timee BETWEEN t1.dateee
AND t1.dateee + interval '10 sec';
-
LEFT JOINmenyimpan baris daritable1dalam hasil, bahkan tanpa kecocokan ditable2. -
Mungkin ada beberapa kecocokan, sehingga setiap baris dari tabel dasar dapat dikembalikan beberapa kali dalam berbagai kombinasi.
Alternatif
Untuk menggabungkan setiap baris di table1 ke baris dengan stempel waktu berikutnya yang lebih tinggi. Tepat satu baris dalam hasil per baris pada 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;
Indeks pada (timee) sangat penting untuk kinerja.