"Nearby" je poněkud nejasné.
Připojit se k table2
kde timee
leží do 10 sekund od dateee
v budoucnu:
SELECT *
FROM table1 t1
LEFT JOIN table2 t2 ON t2.timee BETWEEN t1.dateee
AND t1.dateee + interval '10 sec';
-
LEFT JOIN
uchovává řádky ztable1
ve výsledku i bez shody vtable2
. -
Může existovat více shod, takže každý řádek ze základních tabulek lze vrátit vícekrát v různých kombinacích.
Alternativa
Chcete-li spojit jednotlivé řádky v table1
na řádek s s nejbližší vyšší časovou značkou. Přesně jeden řádek ve výsledku na řádek v 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;
Index na (timee)
je zásadní pro výkon.