「近く」はかなりあいまいです。table2に参加するには ここで、timee dateeeから10秒以内にあります 将来:
SELECT *
FROM table1 t1
LEFT JOIN table2 t2 ON t2.timee BETWEEN t1.dateee
AND t1.dateee + interval '10 sec';
-
LEFT JOINtable1から行を保持します 結果として、table2に一致がなくても 。 -
複数の一致が存在する可能性があるため、ベーステーブルの各行をさまざまな組み合わせで複数回返すことができます。
代替
table1の各行を結合するには 次にタイムスタンプが高い行に移動します。 その通り table1の行ごとに結果の1行 :
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)のインデックス パフォーマンスには不可欠です。