我有一个有两列的表。第一列包含与第二列(来自同一系统)中人员记录的id匹配的人员记录的id,即它们是重复的。加载表的代码确保每列中的id只在列中一次,即每列中的id是不同的。我以每隔一个行的顺序显示数据,但在实际表中可能不是这种情况。
基本上该过程将123中的数据与456的数据相匹配,当然然后将456的数据与123等的数据相匹配。
1. 123 456
2. 456 123
3. 678 910
4. 910 678
5. abc def
6. def abc
等
我需要删除123或456,但不能同时删除678和910以及abc和def等。例如我需要从第一列123,678,abc等中选择这可能吗?
注意:实际的ID是GUID,但为了简单起见,我使用了简单的数字。
答案 0 :(得分:0)
首先,看看此SELECT是否满足您的需求,然后将SELECT ...
替换为DELETE FROM
SELECT id1, id2 FROM Test as t1
WHERE EXISTS (
SELECT 'X' FROM Test as t2
WHERE t2.id1 = t1.id2
AND t2.id2 = t1.id1
AND t2.id1 < t2.id2
)
我们正在寻找所有配对记录,但最后使用/删除第一列中较高ID的那个。