删除不同日期下冗余数据失败,求正确SQL实现方案
问题:删除跨日期冗余数据的SQL语句失效
我尝试删除表中的冗余数据,但针对不同日期的场景未生效。使用的查询语句如下:
WITH date AS (SELECT ID, MIN(time) AS minDate, MAX(time) AS maxDate FROM tablename GROUP BY ID) DELETE FROM tablename WHERE NOT EXISTS (SELECT 1 FROM tablename WHERE tablename.ID = d.ID AND tablename.time IN (d.minDate, d.maxDate));
当前数据表
| ID | name | time | date | dir |
|---|---|---|---|---|
| 4 | Ety | 07:51:48 | 2023-07-20 | in |
| 4 | Ety | 17:04:07 | 2023-07-20 | out |
| 4 | Ety | 07:50:48 | 2023-07-20 | in |
| 4 | Ety | 17:08:07 | 2023-07-21 | out |
| 4 | Ety | 07:08:07 | 2023-07-21 | in |
| 6 | Herry | 07:26:03 | 2023-07-20 | in |
| 6 | Herry | 07:16:11 | 2023-07-20 | in |
| 6 | Herry | 17:26:11 | 2023-07-20 | out |
| 6 | Herry | 06:26:11 | 2023-07-21 | in |
| 6 | Herry | 07:12:11 | 2023-07-21 | in |
| 6 | Herry | 17:26:11 | 2023-07-21 | out |
| 7 | Martha | 07:50:23 | 2023-07-20 | in |
| 7 | Martha | 17:04:43 | 2023-07-20 | out |
| 7 | Martha | 07:50:24 | 2023-07-21 | in |
| 7 | Martha | 17:04:44 | 2023-07-21 | out |
| 8 | Martha | 17:14:45 | 2023-07-21 | out |
期望得到的数据表
| ID | name | time | date | dir |
|---|---|---|---|---|
| 4 | Ety | 07:51:48 | 2023-07-20 | in |
| 4 | Ety | 17:04:07 | 2023-07-20 | out |
| 4 | Ety | 07:08:07 | 2023-07-21 | in |
| 4 | Ety | 17:08:07 | 2023-07-21 | out |
| 6 | Herry | 07:16:11 | 2023-07-20 | in |
| 6 | Herry | 17:26:11 | 2023-07-20 | out |
| 6 | Herry | 06:26:11 | 2023-07-21 | in |
| 6 | Herry | 17:26:11 | 2023-07-21 | out |
| 7 | Martha | 07:50:24 | 2023-07-20 | in |
| 7 | Martha | 17:04:44 | 2023-07-20 | out |
| 7 | Martha | 07:50:24 | 2023-07-21 | in |
| 7 | Martha | 17:14:45 | 2023-07-21 | out |
内容的提问来源于stack exchange,提问作者mycode binary
相关产品推荐
相关产品推荐

