"Nära" är ganska flummigt.
För att gå med i table2 där timee ligger inom 10 sekunder efter dateee i framtiden:
SELECT *
FROM table1 t1
LEFT JOIN table2 t2 ON t2.timee BETWEEN t1.dateee
AND t1.dateee + interval '10 sec';
-
LEFT JOINbehåller rader fråntable1i resultatet, även utan matchning itable2. -
Det kan finnas flera matchningar, så att varje rad från bastabellerna kan returneras flera gånger i olika kombinationer.
Alternativ
För att slå samman varje rad i table1 till raden med nästa högre tidsstämpel. Precis en rad i resultatet per rad på 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;
Ett index på (timee) är avgörande för prestanda.