SQL从两列中选择一个或另一个值

时间:2015-12-15 17:47:12

标签: sql sql-server sql-server-2012

我有一个有两列的表。第一列包含与第二列(来自同一系统)中人员记录的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,但为了简单起见,我使用了简单的数字。

1 个答案:

答案 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的那个。