【发布时间】:2012-09-05 19:21:17
【问题描述】:
我有这张桌子
CREATE TABLE T
(No1 INT,
No2 INT
)
INSERT INTO T (No1, No2) VALUES (1, 2)
INSERT INTO T (No1, No2) VALUES (2, 1)
INSERT INTO T (No1, No2) VALUES (3, 4)
INSERT INTO T (No1, No2) VALUES (4, 3)
INSERT INTO T (No1, No2) VALUES (5, 6)
INSERT INTO T (No1, No2) VALUES (6, 5)
INSERT INTO T (No1, No2) VALUES (1, 6)
INSERT INTO T (No1, No2) VALUES (6, 1)
No1 No2
1 2
2 1
3 4
4 3
5 6
6 5
1 6
6 1
我想要的是消除具有相同值但在另一个字段中的行。对我来说 No1=1 No2=2 和 No1=2 No2=1 是一回事。最后我想要这个结果。
No1 No2
1 2
3 4
5 6
1 6
我尝试了很多东西,也进行了很多搜索,但一无所获。我发现的唯一方法是使用光标。当我玩数百万条记录时,它非常慢。有没有办法通过查询来做到这一点?
谢谢。
【问题讨论】:
-
什么 RDBMS 和版本?此外,一旦您删除了欺骗,您可以在
No1 No2上放置一个唯一索引并在No1 > No2上放置一个约束,以确保它们仅以一种方式存储。 -
您是否有机会检查好友请求?因为我也有同样的问题! :)
-
当你说你想“消除”这些行时,你是想从表中删除它们还是只是从选择语句中排除它们?
-
@Martin 可能需要是
No1 >= No2 -
@RedFilter - 是的,我根据示例数据做了一个假设,因为没有
No1 = No2
标签: sql duplicates row