假设我有一个这样的表:
+--+----+----+
|ID|Col1|Col2|
+--+----+----+
|0 |ABC |DEF |
+--+----+----+
|1 |ABC |XYZ |
+--+----+----+
|2 |XYZ |ABC |
+--+----+----+
|3 |DEF |XYZ |
+--+----+----+
我想写一个查询,它将删除所有包含在另一行中的条目的行,虽然不一定按相同的顺序。所以在这种情况下我想删除第2行,因为它包含与第1行相同的条目。因此输出应为:
+--+----+----+
|ID|Col1|Col2|
+--+----+----+
|0 |ABC |DEF |
+--+----+----+
|1 |ABC |XYZ |
+--+----+----+
|3 |DEF |XYZ |
+--+----+----+
DISTINCT
的某些变体可以达到此目的吗?
到目前为止,这是我(失败)的尝试,以确定正常DISTINCT
无法获取的任何交叉相似性:
DELETE FROM myTable WHERE EXISTS
(
SELECT 1 FROM myTable a JOIN myTable b ON a.Col1 = b.Col1 WHERE a.Col1 = b.Col2 AND a.Col2 = b.Col1
)
答案 0 :(得分:0)
假设您的表中的 ID 为 UNIQUE ..
DELETE FROM mytable
WHERE (id) IN
(SELECT B.id FROM
myTable A, myTable B
WHERE A.col1 = B.col2
AND A.col2 = B.col1)