1

我正在修改 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 列,我想远离额外的列。

4

2 回答 2

3

抱歉,如果这不是 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
于 2010-08-20T19:07:30.700 回答
0
DELETE r
FROM friends l, friends r
WHERE l.user1 = r.user2
AND l.user2 = r.user1

这将删除两个条目。如果你想继续使用它们,你必须添加一个类似于 Will A 已经提出的 where 语句,但我建议你使用 > 而不是 < 来保持较小的 user1 id。只是看起来更好:)

于 2010-08-20T19:24:27.623 回答