MySQL内部连接单查询

MySQL内部连接单查询,mysql,join,left-join,inner-join,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 以及朋友表中的数据: id1: 1 , id2: 2 这意味着1是2的朋友 我需要一个简单的查询来说明id1是id2的朋友(但我需要名字),比如:finalestinity是乔治的朋友。我必须使一个mysql内部或左连

我有两张桌子:

users : contains id and name
friends : contains id1 and id2
假设我在
users
表中有这些数据:

id : 1 , name : FinalDestiny
id : 2 , name : George
以及
朋友
表中的数据:

id1: 1 , id2: 2
这意味着1是2的朋友

我需要一个简单的查询来说明
id1
id2
的朋友(但我需要名字),比如:finalestinity是乔治的朋友。我必须使一个mysql内部或左连接,但我不知道如何

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
说明:


由于friend由两个用户组成,friend1和friend2,因此我们将尝试将friend与2个用户、1个用户表(对应于ID1)和另一个用户表(对应于ID2)结合起来,从各自的用户表中获取这两个朋友的信息。

我不知道您是否可以这样做。但这是我能给你的最接近的了


从用户u1、用户u2、朋友f中选择u1.name、u2.name,其中u1.id=f.id1和u2.id=f.id2
使用别名并将用户表与朋友表双重连接:

    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`

您需要在
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

您应该能够在不显式使用连接的情况下查询此内容,使用的内容大致如下

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

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


谢谢格式化。现在可读性很强。@FinalDestiny:不喜欢流行音乐?嗯,我不明白你的疑问…你能试着用我的表格来做吗?用户和朋友:\@FinalDestiny到底什么不起作用?我检查过了,但找不到输入错误…@最后我只是在本地重新创建了您的表并测试了我的查询。它适用于meit,就像在语言中定义变量一样。类似于
inti
,相当于
用户u1
users
是此处的表名,
u1
是此处的别名。users表的表别名。我们需要参考同一张表两次。通过提供别名,我们可以使用要从中提取名称的别名来限定.name。u1=在id1上联接的用户表。u2=在id2上连接的用户表。
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