我有一个这样的表:
ID, ItemsID
1 2
1 3
1 4
2 3
2 4
2 2
我想删除像ID = 2这样的元组,因为在我的情况下2,3,4与3,4,2相同.
我怎么能用SQL做到这一点?
最佳答案 对不起,我没有及时看到Oracle标签.但是,我将保留MySQL解决方案以供参考.
Apparently在某些Oracle版本中有类似GROUP_CONCAT()的东西.
它可能不是最优雅的解决方案,但这将完成这项工作:
DELETE FROM t WHERE ID IN (
SELECT ID
FROM (SELECT ID, GROUP_CONCAT(ItemsID ORDER BY ItemsID) AS tuple FROM t GROUP BY ID) AS tuples
WHERE EXISTS (
SELECT TRUE
FROM (SELECT ID, GROUP_CONCAT(ItemsID ORDER BY ItemsID) AS tuple FROM t GROUP BY ID) tuples2
WHERE tuples2.tuple = tuples.tuple
AND tuples2.ID < tuples.ID
)
)
您可能想要调整group_concat_max_len.