次の問題があります。テーブル A の列「UPDATE_VALUE」を別のテーブル B の列「SOURCE_VALUE」の値で更新したいのですが、両方のテーブルにタイムスタンプ列があり、テーブル A で更新する必要がある値はテーブル A の行のタイムスタンプより小さい/等しい最高のタイムスタンプを持つテーブル B の行の 1 つ。
例えば:
表 A:
| ID | TIMESTAMP | UPDATE_VALUE |
| 1 | 2010-09-23 10:00:00 | |
| 2 | 2010-09-25 05:20:00 | |
| 3 | 2010-09-25 18:10:30 | |
| 4 | 2010-09-27 07:04:30 | |
表 B:
| ID | TIMESTAM P | SOURCE_VALUE |
| 1 | 2010-09-23 00:00:00 | VAL_1 |
| 2 | 2010-09-24 12:30:00 | VAL_2 |
| 2 | 2010-09-24 04:50:00 | VAL_3 |
| 3 | 2010-09-25 12:00:00 | VAL_4 |
| 3 | 2010-09-25 12:20:00 | VAL_5 |
| 4 | 2010-09-26 01:50:00 | VAL_6 |
| 4 | 2010-09-26 02:00:00 | VAL_7 |
| 5 | 2010-09-27 14:00:00 | VAL_8 |
| 6 | 2010-09-28 22:00:00 | VAL_9 |
したがって、テーブル A の行 1 では、テーブル B の VAL_1 が必要です。この行のタイムスタンプは、テーブル A の行のタイムスタンプより小さい/等しいテーブル B の最高値であるためです。テーブル AI の行 2 には、行 4 が必要です。テーブル B など。完全な結果は次のようになります。
表 A:
| ID | TIMESTAMP | UPDATE_VALUE |
| 1 | 2010-09-23 14:25:00 | VAL_1 |
| 2 | 2010-09-25 12:00:00 | VAL_4 |
| 3 | 2010-09-25 14:00:00 | VAL_5 |
| 4 | 2010-09-27 16:50:00 | VAL_8 |
私は SQLite 3 を使用していますが、SQL クエリに関するヒントをいただければ幸いです。
お時間を割いていただき、ありがとうございました。
スギ