„Наблизо“ е доста размито.
За да се присъедините към table2
където timee
се намира в рамките на 10 секунди от dateee
в бъдеще:
SELECT *
FROM table1 t1
LEFT JOIN table2 t2 ON t2.timee BETWEEN t1.dateee
AND t1.dateee + interval '10 sec';
-
LEFT JOIN
запазва редове отtable1
в резултата, дори без съвпадение вtable2
. -
Може да има множество съвпадения, така че всеки ред от базовите таблици да може да бъде върнат многократно в различни комбинации.
Алтернатива
За да съедините всеки ред в table1
към реда със следващото по-високо времево клеймо. Точно така един ред в резултата на ред на 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;
Индекс на (timee)
е от съществено значение за производителността.