我正在修改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列,我希望远离额外的列。
答案 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。只是看起来更好:))