簡體   English   中英

MySQL內部連接有2列

[英]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列是朋友名稱。 u1u2f並引用已聯接的三個表。 用戶表與好友表兩次連接。 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.

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