datetime と double を含む 2 つのテーブルがあります。
次のようになります。
mysql> select * from ONE; | mysql> select * from TWO;
+---------------------+----------+ | +---------------------+----------+
| date | value | | | date | value |
+---------------------+----------+ | +---------------------+----------+
| 2002-03-18 10:30:02 | -181.241 | | | 2002-03-18 10:30:00 | -188.192 |
| 2002-03-18 10:30:06 | -180.673 | | | 2002-03-18 10:30:04 | -187.619 |
| 2002-03-18 10:30:10 | -180.055 | | | 2002-03-18 10:30:08 | -187.032 |
| 2002-03-18 10:30:14 | -179.459 | | | 2002-03-18 10:30:12 | -186.418 |
| 2002-03-18 10:30:18 | -178.801 | | | 2002-03-18 10:30:16 | -185.807 |
共通の日付列を持つ各テーブルの値に対してクエリを実行しようとしています (参照として ONE.date を使用)。ただし、測定値の日付が対称でない場合もあります。上記はそのような期間の例です (これは最悪のシナリオです)。ここで、テーブル 2 の値は 2 秒後のテーブル 1 の値に対応します。
時間に従って2つのテーブルの値をソートするために、1つの「イベント」の測定値間の最大時間差に設定された「ソート精度」を許可したいと考えています。この場合、この精度は 2 秒です。
どのように見せたくないか: ONE.data と TWO.date の時間差が +- 2 秒未満の場合。TWO の値を ONE に結合します。
mysql> select * from ONE;
+---------------------+----------+-----------+
| date | valueONE | valueTWO |
+---------------------+----------+ ----------+
| 2002-03-18 10:30:02 | -181.241 | -188.192 |
| 2002-03-18 10:30:06 | -180.673 | -187.619 |
| 2002-03-18 10:30:10 | -180.055 | -187.032 |
| 2002-03-18 10:30:14 | -179.459 | -186.418 |
| 2002-03-18 10:30:18 | -178.801 | -185.807 |
差が +-2 秒を超える場合は、測定を破棄します。これは私が試したものですが、以下のクエリはタイムアウトします。
SELECT ONE.date, ONE.value, TWO.date, TWO.value
FROM ONE
join TWO on ONE.date = TWO.date+INTERVAL 1 SECOND or ONE.date = TWO.date
結合ステートメント内に IF 文を含めることは可能ですか?
if SELECT TIMESTAMPDIFF(SECOND,'2002-03-18 10:30:02','2002-03-18 10:30:00') <= 2, then join