在表格中查找唯一记录

时间:2012-03-01 14:09:44

标签: sql database unique

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

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

获取独特的el1,el2元素的最佳方法是什么? (记录1,2与2,1相同)

2 个答案:

答案 0 :(得分:1)

我确信这是一个更优雅的解决方案,但现在我无法想到它。如果您反转列,第一部分将找到无法找到匹配项的行。如果您反转列,第二个会找到可以找到匹配项的行 - 并处理每列中具有相同值的[el1,el2]对

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)

答案 1 :(得分:0)

擦洗数据(拖地......):

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

防止数据损坏再次发生(...修复泄漏):

ALTER TABLE YourTable ADD
    CHECK ( el1 < el2 );