删除具有反转值的行

时间:2014-10-22 10:30:18

标签: sql sqlite

我在A和B列中有一个包含以下值的表:

**A  |   B**

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

我只想要:

1  |   2
3  |   4

关于如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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确保只删除两个重复行中的一个。)