2014-10-22 41 views
1

删除行我有在列A以下值和B表:与反价值观

**A | B** 

1 | 2 
2 | 1 
3 | 4 
4 | 3 

我只想:

1 | 2 
3 | 4 

如何做到这一点任何想法?

回答

0

按照什么顺序返回行?根据您的订单,您可以使用;

SELECT X.* FROM MYTABLE X 
LEFT JOIN MYTABLE Y ON X.A = Y.B AND X.B = Y.A 
WHERE X.A < X.B 

SELECT X.* FROM MYTABLE X 
LEFT JOIN MYTABLE Y ON X.A = Y.B AND X.B = Y.A 
WHERE X.rowid < Y.rowid 
+0

如果某些行是单身人士,这些将会失败。 – 2014-10-22 12:18:33

0

你想删除有重复,即所有行,对于其中重复的行存在的所有行:

DELETE FROM MyTable 
WHERE EXISTS (SELECT 1 
       FROM MyTable AS T2 
       WHERE T2.A = MyTable.B 
       AND T2.B = MyTable.A 
       AND A < B) 

(该A < B确保只有一个的两个重复行被删除。)

+0

谢谢,我只是选择了另一个,因为它在标准select,from,where查询表单中,而我不想使用Delete函数。 – user3562967 2014-10-22 11:23:24