„W pobliżu” jest raczej niewyraźne.
Aby dołączyć do table2 gdzie timee leży w ciągu 10 sekund od dateee w przyszłości:
SELECT *
FROM table1 t1
LEFT JOIN table2 t2 ON t2.timee BETWEEN t1.dateee
AND t1.dateee + interval '10 sec';
-
LEFT JOINprzechowuje wiersze ztable1w wyniku, nawet bez dopasowania wtable2. -
Może być wiele dopasowań, więc każdy wiersz z tabel podstawowych może zostać zwrócony wiele razy w różnych kombinacjach.
Alternatywna
Aby połączyć każdy wiersz w table1 do wiersza z następnym wyższym znacznikiem czasu. Dokładnie jeden wiersz w wyniku na wiersz w 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 na (timee) ma zasadnicze znaczenie dla wydajności.