簡體   English   中英

mysql兩列的獨特組合

[英]mysql unique combination of two columns

這是朋友表

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

我有大約200k這樣的行,如果userid = 1和friendid = 2,我想刪除重復的示例,那么我不希望下一行userid = 2friendid = 1

我想要跨2列的唯一組合意味着如果1,2在那里,那么2,1不應該在那里,應該刪除。

然后,我可以像這樣進行好友列表查詢:

select * from friends where (userid=1 or friendid=1) and confirmed=1

我的問題:

如何刪除重復的行?

也請給我查詢以查找2個用戶的共同朋友(他們的userid可以駐留在usersid列中,也可以駐留在friends表中的friendid中)。

將表本身與表連接起來,以相反的順序查找具有相同用戶對的行。

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子句確保我們只刪除集合中兩行之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM