MySQL内连接有2列

时间:2010-02-13 23:14:59

标签: mysql entity-relationship inner-join

我有一个表用户有2个字段:id,name和另外两个有两个字段的表朋友:userid1 userid2。

所以这意味着userid1是userid2的朋友。我希望,通过一个内部或左边的连接来显示:

userid1名称(来自用户表)是具有userid2名称的朋友(来自用户表)

东西

SELECT * FROM friends INNER JOIN用户ON friends.userid1 = users.id AND friends.userid2 = users.id但这不起作用。

任何好的查询都有好的解释吗?

例如,如果我在users表中有下一个详细信息: ID:1 NAME:FinalDestiny ID:2 NAME:George

以及friends表中的下一个详细信息: ID1:1 ID2:2

所以这意味着1是2的朋友。

我需要一个查询来获取名称1和名称2并回应他们是朋友

FinalDestiny是乔治的朋友

3 个答案:

答案 0 :(得分:2)

您检查用户是否为自己的朋友。在您的选择中使用OR来匹配用户的朋友:

SELECT * FROM friends INNER JOIN users ON friends.userid1 = users.id OR friends.userid2 = users.id 

答案 1 :(得分:2)

我知道您指定要通过一个连接完成此操作,但在我看来,您需要两个连接。我相信这个查询会为您提供所需的信息:

SELECT u1.Name, u2.Name
FROM Users u1, Users u2, Friends f
WHERE u1.id = f.userid1 AND u2.id = f.userid2

我正在使用Friends表加入Users表,其中包含Users.id = Friends.userid1。然后,我正在使用(新表)上的Users表加入这个新表.userid2 = Users.id。这导致具有4列的表。这些列是Friends表的原始2列,另外还有2列用于朋友的名称。 u1u2f并引用已加入的三个表。 users表与friends表连接两次。 u1是在Friends.userid1 = User.id上加入的Users表的副本。 u2是在Friends.userid2 = User.id上加入的Users表的副本。

从这个包含4列的表中,我只选择了朋友的名字。

如果需要更多解释,请告诉我。

答案 2 :(得分:0)

例如,如果我在users表中有下一个详细信息: ID:1 NAME:FinalDestiny ID:2 NAME:George

以及friends表中的下一个详细信息: ID1:1 ID2:2

所以这意味着1是2的朋友。

我需要一个查询来获取名称1和名称2并回应他们是朋友

FinalDestiny是乔治的朋友