删除MySQL中的双向重复项

时间:2010-08-20 19:03:25

标签: mysql duplicates unique phpbb bidirectional

我正在修改phpBB的表,以便为朋友提供双向关系。不幸的是,已经添加了朋友的人创建了重复的行:

user1   user2   friend
2       3       true
3       2       true
2       4       true

所以我想从上面的例子中删除第1行和第2行。目前,这是我的查询构建(不工作atm):

DELETE FROM friends WHERE user1 IN (SELECT user1 FROM (SELECT f1.user1 FROM friends f1, friends f2 WHERE f1.user1=f2.user2 AND f1.user2=f2.user1 GROUP BY f1.user1) AS vtable);

受到Mysql Duplicate Rows ( Duplicate detected using 2 columns )的启发,但不同之处在于我没有唯一的ID列,我希望远离额外的列。

2 个答案:

答案 0 :(得分:1)

道歉,如果这不是100%合法的MySQL,我是MSSQL用户......

DELETE F1
FROM friends F1
INNER JOIN friends F2
ON F2.user1 = F1.user2
AND F2.user2 = F1.user1
WHERE F1.user1 < F1.user2

答案 1 :(得分:0)

DELETE r
FROM friends l, friends r
WHERE l.user1 = r.user2
AND l.user2 = r.user1

这将删除两个条目。如果你想继续使用它们,你必须添加一个像Will A alread建议的where语句,但我建议你使用&gt;而不是&lt;保持较小的user1 id。只是看起来更好:))