根据另一个 Table 中值之间的差异删除 SQL Table 中的行

Delete Rows in SQL Table Based on Difference Between Values in Another Table

我有一个 table(我们称它为 dbo.temp),它具有来自不同传感器的逐分钟温度记录:

+-----------+------------+----------+------+
| SENSOR_ID |   DATE     |   TIME   | TEMP |
+-----------+------------+----------+------+
|    106971 | 2017-01-10 | 10:05:00 | 21.1 |
|    106971 | 2017-01-10 | 10:06:00 | 21.1 |
|    106971 | 2017-01-10 | 10:07:00 | 21.2 |
|    106971 | 2017-01-10 | 10:08:00 | 21.1 |
|    106971 | 2017-01-10 | 10:09:00 | 21.1 |
|    106971 | 2017-01-10 | 10:10:00 | 21.2 |
|    106971 | 2017-01-10 | 10:11:00 | 21.2 |
|    106971 | 2017-01-10 | 10:12:00 | 21.2 |
|    106971 | 2017-01-10 | 10:13:00 | 21.3 |
|    106971 | 2017-01-10 | 10:14:00 | 21.4 |
|    106971 | 2017-01-10 | 10:15:00 | 21.4 |
|    106971 | 2017-01-10 | 10:16:00 | 21.4 |
|    106971 | 2017-01-10 | 10:17:00 | 21.5 |
|    106971 | 2017-01-10 | 10:18:00 | 21.3 |
|    106971 | 2017-01-10 | 10:19:00 | 21.3 |
|    106971 | 2017-01-10 | 10:20:00 | 21.3 |
|    106971 | 2017-01-10 | 10:21:00 | 21.4 |
+-----------+------------+----------+------+

第二个 (dbo.datetime) 包含日期和时间值。

+-------------+-----------+----------+
|    DATE     | TIME_A    | TIME_B  |
+-------------+-----------+----------+
| 2017-01-10  | 10:13:00  | 10:18:00 |
| 2017-01-11  | 09:18:00  | 10:28:00 |
| 2017-01-12  | 10:45:00  | 10:59:00 |
+-------------+-----------+----------+

我想删除 dbo.temp 中任何给定日期时间介于 dbo.datetime 中给定的两个时间之间的行。 SENSOR_ID 并不重要,因为 TIME_ATIME_B 之间的所有数据都需要删除。

例如我希望dbo.temp在2017-01-10TIME_ATIME_B之间删除后变成这样:

+-----------+------------+----------+------+
| SENSOR_ID |   DATE     |   TIME   | TEMP |
+-----------+------------+----------+------+
|    106971 | 2017-01-10 | 10:05:00 | 21.1 |
|    106971 | 2017-01-10 | 10:06:00 | 21.1 |
|    106971 | 2017-01-10 | 10:07:00 | 21.2 |
|    106971 | 2017-01-10 | 10:08:00 | 21.1 |
|    106971 | 2017-01-10 | 10:09:00 | 21.1 |
|    106971 | 2017-01-10 | 10:10:00 | 21.2 |
|    106971 | 2017-01-10 | 10:11:00 | 21.2 |
|    106971 | 2017-01-10 | 10:12:00 | 21.2 |
|    106971 | 2017-01-10 | 10:19:00 | 21.3 |
|    106971 | 2017-01-10 | 10:20:00 | 21.3 |
|    106971 | 2017-01-10 | 10:21:00 | 21.4 |
+-----------+------------+----------+------+

我该怎么做? dbo.datetime 有大约 14 个月的每日 TIME_ATIME_B 值,因此不想每天手动 delete from dbo.temp where date = 'X' and time between 'Y' and 'Z'

不太确定我是否理解你的问题,但你可以试试这个查询

DELETE t
FROM dbo.temp t
JOIN dbo.datetime d ON d.Date = t.Date
WHERE t.Time BETWEEN d.Time_A AND Time_B