【发布时间】:2021-12-06 16:33:00
【问题描述】:
我正在连接同一个表的两个实例,以查看与相同序列号和日期匹配但 ID 不同的记录。目的是识别冲突。我的查询是:
SELECT DISTINCT
t1.id,
t1.status,
t1.date,
t1.serial,
t2.id_2,
t2.status_2,
t2.date_2,
t2.serial_2
FROM table AS t1 INNER JOIN table AS t2 ON t1.serial = t2.serial_2
WHERE t1.date = t2.date_2 AND t1.id <> t2.id_2
ORDER BY t1.date, t1.id;
此查询结果如下:
| id | status | date | serial | id_2 | status_2 | date_2 | serial_2 |
|---|---|---|---|---|---|---|---|
| 01 | VALID | 01/13/2021 | 0001 | 02 | VALID | 01/13/2021 | 0001 |
| 02 | VALID | 01/13/2021 | 0001 | 01 | VALID | 01/13/2021 | 0001 |
| 03 | VALID | 02/10/2021 | 0005 | 04 | VALID | 02/10/2021 | 0005 |
| 04 | VALID | 02/10/2021 | 0005 | 03 | VALID | 02/10/2021 | 0005 |
| 05 | VALID | 02/15/2021 | 0007 | 06 | VALID | 02/15/2021 | 0007 |
| 06 | VALID | 02/15/2021 | 0007 | 05 | VALID | 02/15/2021 | 0007 |
结果显示同一冲突的两条记录。以第 1 行和第 2 行为例,可以注意到与 ID 的 01 和 02 相关的序列 0001 与 01/13/2021 的冲突相同。
如何消除重复,为每个冲突保留一行?
谢谢。
【问题讨论】:
-
你能否也指定预期的结果,让事情更清楚。
-
@jarlh,预期结果是第 1、3 和 5 行(奇数 ID)。第 2、4 和 6 行在同一日期引用相同的序列号(偶数 ID 的相同冲突)。谢谢。