"I nærheden" er ret uklar.
For at deltage i table2
hvor timee
ligger inden for 10 sekunder efter dateee
i fremtiden:
SELECT *
FROM table1 t1
LEFT JOIN table2 t2 ON t2.timee BETWEEN t1.dateee
AND t1.dateee + interval '10 sec';
-
LEFT JOIN
beholder rækker fratable1
i resultatet, selv uden match itable2
. -
Der kan være flere matches, så hver række fra basistabellerne kan returneres flere gange i forskellige kombinationer.
Alternativ
For at forbinde hver række i table1
til rækken med det næste højere tidsstempel. Nøjagtig en række i resultatet pr. række 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;
Et indeks på (timee)
er afgørende for ydeevnen.