[英]MySQL inner join with 2 columns
我有一個表用戶有2個字段:id,name和另一個表朋友有2個字段:userid1 userid2。
因此,這意味着userid1與userid2是朋友。 我想要一個內部或左側連接顯示此:
userid1名稱(從用戶表中獲取)是與userid2名稱(從用戶表中獲取)的朋友
某物
SELECT * FROM friends INNER JOIN用戶ON friends.userid1 = users.id和friends.userid2 = users.id,但這不起作用。
有任何好的解釋和好的查詢嗎?
例如,如果我在用戶表中有以下詳細信息:ID:1名稱:FinalDestiny ID:2名稱:喬治
以及好友表中的下一個詳細信息:ID1:1 ID2:2
因此,這意味着1是2的朋友。
我需要一個查詢來獲取名稱1和2的名稱,並回顯它們是朋友
FinalDestiny是George的朋友
您檢查用戶是否是其自身的朋友。 在您的選擇中使用OR
來匹配用戶的朋友:
SELECT * FROM friends INNER JOIN users ON friends.userid1 = users.id OR friends.userid2 = users.id
我知道您指定要通過一個連接完成此操作,但是在我看來,您需要兩個連接。 我相信此查詢將為您提供所需的信息:
SELECT u1.Name, u2.Name
FROM Users u1, Users u2, Friends f
WHERE u1.id = f.userid1 AND u2.id = f.userid2
我將Users表與Friends表一起添加到Users.id = Friends.userid1上。 然后,我將這個新表與(新表).userid2 = Users.id上的Users表聯接在一起。 這將導致一個包含4列的表。 這些列是Friends表的原始2列,另外2列是朋友名稱。 u1
, u2
和f
並引用已聯接的三個表。 用戶表與好友表兩次連接。 u1
是在Friends.userid1 = User.id上聯接的Users表的副本。 u2
是在Friends.userid2 = User.id上聯接的Users表的副本。
從該表的4列中,我僅選擇朋友的姓名。
讓我知道是否需要更多解釋。
例如,如果我在用戶表中有以下詳細信息:ID:1名稱:FinalDestiny ID:2名稱:喬治
以及好友表中的下一個詳細信息:ID1:1 ID2:2
因此,這意味着1是2的朋友。
我需要一個查詢來獲取名稱1和2的名稱,並回顯它們是朋友
FinalDestiny是George的朋友
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.