"Nelle vicinanze" è piuttosto confuso.
Per unirti a table2
dove timee
si trova entro 10 secondi da dateee
in futuro:
SELECT *
FROM table1 t1
LEFT JOIN table2 t2 ON t2.timee BETWEEN t1.dateee
AND t1.dateee + interval '10 sec';
-
Il
LEFT JOIN
mantiene le righe datable1
nel risultato, anche senza corrispondenza intable2
. -
Possono esserci più corrispondenze, in modo che ogni riga delle tabelle di base possa essere restituita più volte in varie combinazioni.
Alternativa
Per unire ogni riga in table1
alla riga con il timestamp successivo più alto. Esattamente una riga nel risultato per riga su 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;
Un indice su (timee)
è essenziale per le prestazioni.