mysql是两列的唯一组合

mysql是两列的唯一组合,mysql,Mysql,这是朋友桌 userid(int) | friendid(int) | confirmed(tiny int) -------------------- 1 | 2 | 1 2 | 1 | 1 1 | 3 | 1 3 | 1 | 1 1 | 5 | 0 2 | 4 | 1 4 | 2 | 1 4 | 1 | 1 1 | 4 | 1 我有大约20万排像这样的 我想删除重复项,例如,如果userid=1和friendid=2,那么我不希望下一行userid=2 friendid=1 我想在两列之间

这是朋友桌

userid(int) | friendid(int) | confirmed(tiny int)
--------------------
1 | 2 | 1
2 | 1 | 1
1 | 3 | 1
3 | 1 | 1
1 | 5 | 0
2 | 4 | 1
4 | 2 | 1
4 | 1 | 1
1 | 4 | 1
我有大约20万排像这样的 我想删除重复项,例如,如果userid=1和friendid=2,那么我不希望下一行userid=2 friendid=1

我想在两列之间的唯一组合意味着,如果1,2存在,那么2,1不应该存在,应该删除

然后我可以像这样进行好友列表查询:

select * from friends where (userid=1 or friendid=1) and confirmed=1
我的问题是:

如何删除此重复行


还请给我查询以查找2个用户的共同好友(他们的userid可能位于userid列或friends表中的friendsid)。

将表本身连接起来,以查找具有相同用户对的行,顺序相反

DELETE f1 
FROM friends as f1
JOIN friends AS f2 ON f1.userid = f2.friendid AND f1.friendid = f2.userid
WHERE f1.friendid > f1.userid

WHERE
子句确保我们只删除集合中两行中的一行。

不要在同一个问题中问两个问题。