「近く」はかなりあいまいです。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 JOIN
table1
から行を保持します 結果として、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)
のインデックス パフォーマンスには不可欠です。