Sql 在表中查找唯一的记录

Sql 在表中查找唯一的记录,sql,database,unique,Sql,Database,Unique,表中的记录类似于[el1,el2] 还有一些记录[el2,el1],也就是说它们是相同的,只是在不同的共谋中 获取唯一el1、el2元素的最佳方法是什么?记录1,2与记录2,1相同,我确信有一个更优雅的解决方案,但现在我想不起来了。第一部分查找在反转列时找不到匹配项的行。第二个查找行,如果您反转列,您可以在其中查找匹配项,并处理每列中具有相同值的[el1,el2]对 one table a= {el1, el2} where el1 is 1..10, el2 is {5..15}. 要将数

表中的记录类似于[el1,el2] 还有一些记录[el2,el1],也就是说它们是相同的,只是在不同的共谋中


获取唯一el1、el2元素的最佳方法是什么?记录1,2与记录2,1相同,我确信有一个更优雅的解决方案,但现在我想不起来了。第一部分查找在反转列时找不到匹配项的行。第二个查找行,如果您反转列,您可以在其中查找匹配项,并处理每列中具有相同值的[el1,el2]对

one table a= {el1, el2}
where el1 is 1..10, el2 is {5..15}. 

要将数据拖到地板上,请执行以下操作:

select t1.el1, t1.el2
from @tbl t1
where not exists (select * from @tbl t2 where t2.el1 = t1.el2 and t2.el2 = t1.el1)

union

select t1.el1, t1.el2
from @tbl t1
where exists (select * from @tbl t2 where t2.el1 = t1.el2 and t2.el2 = t1.el1 and t2.el1 <= t1.el1)
要防止数据损坏再次发生…请修复泄漏:

SELECT el1, el2
  FROM YourTable
UNION
SELECT el2 AS el1, el1 AS el2
  FROM YourTable;

我提出了一个稍微不同的解决方案,创建了一个联盟,即表1A,b表2A,b从t1中选择a,b,a为什么不发布它来帮助其他人呢?
ALTER TABLE YourTable ADD
    CHECK ( el1 < el2 );