MySQL内连接单查询

时间:2010-02-14 09:21:05

标签: mysql join left-join inner-join

我有两张桌子:

users : contains id and name
friends : contains id1 and id2

假设我在users表中有这些数据:

id : 1 , name : FinalDestiny
id : 2 , name : George

这个数据在friends表中:

id1: 1 , id2: 2

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

我需要一个查询来说id1id2的朋友(但我需要名字)喜欢:FinalDestiny是乔治的朋友。我必须创建一个mysql内部或左边的连接,但我不知道如何

6 个答案:

答案 0 :(得分:2)

Select F1.Name,
       F2.Name
From Friends F
INNER JOIN USER F1 ON F.ID1 = F1.id
INNER JOIN USER F2 ON F.ID2 = F2.id

说明:

由于朋友是两个用户,friend1和friend2的组合,所以我们将尝试加入2个用户的朋友,1个与ID1对应的用户表和其他ID2从各个用户表中获取两个朋友的信息。

答案 1 :(得分:1)

我不知道你是否能做到。但这是我能为你找到的最接近的。

select u1.name, u2.name from users u1, users u2, friends f where u1.id = f.id1 and u2.id = f.id2

答案 2 :(得分:1)

使用别名并将用户表与friend表重复加入:

    SELECT `u1`.`name` `name1`, `u2`.`name` `name2`
      FROM `friends` `f`
INNER JOIN `users` `u1`
        ON `f`.`id1` = `u1`.`id`
INNER JOIN `users` `u2`
        ON `f`.`id2` = `u2`.`id`

答案 3 :(得分:1)

您需要两次加入users表。

SELECT 
   u1.name AS FirstPerson
  ,u2.name AS SecondPerson 
FROM 
  friends f
INNER JOIN
  users u1
ON
  u1.id = f.id1
INNER JOIN
  users u2
ON
  f.id2 = u2.id

答案 4 :(得分:1)

你应该能够在没有明确使用连接的情况下查询这个...

SELECT * FROM (friends, users AS u1, users AS u2) WHERE
friends.id1=u1.id AND friends.id2=u2.id

答案 5 :(得分:1)

您需要从朋友中选择并加入用户表两次(对于每个朋友)

SELECT u1.Name, u2.Name 
FROM Friends as fr 
  INNER JOIN users as u1 on fr.Id1 = u1.id
  INNER JOIN users as u2 on fr.Id2 = u2.id