mySQL 查询以收集 2 个 ID 并将它们与每行 2 个名称匹配

mySQL query to gather 2 ids and match them to 2 names per row

嘿,我有一个 SQL 查询问题,我已经想了好久了,只是想不出正确的查询来执行它。

我想做的是查看 2 tables。每个 table 都有一个相互匹配的唯一 ID,然后是一个与该 ID 关联的名称。但是,OtherTbl 在同一条记录 中有 两个 ID,而不是像在 UserTbl.

用户表:

id | mID   | name
---|-------|-------------
5  | 12345 | Bob Barker
6  | 54688 | Steve Jobs
7  | 56999 | Adam Sandler
9  | 53166 | Bill Gates
11 | 87540 | MC Hammer

其他表:

id | leftID | rightID
---------------------
8  | 54688  | 12345
41 | 87540  | 87540
43 | 56999  | 53166

所以我想从上面的 2 tables 中得到的是在一起的 2 个用户(leftID 和 rightUD)。输出如下所示:

leftID | rightID | leftName     | rightName
-------|---------|--------------|-----------
54688  | 12345   | Steve Jobs   | Bob Barker
87540  | 87540   | MC Hammer    | MC Hammer
56999  | 53166   | Adam Sandler | Bill Gates

我知道这是可以做到的 - 我只是想不出办法让它发挥作用!

我尝试了可靠的内连接

SELECT 
    ut.leftID,
    ut.rightID,
    ot.leftName 
FROM 
    OtherTbl as ot
INNER JOIN 
    UserTbl AS ut 
ON
    ot.leftID = ut.mID 

上面的查询确实输出了数据,但它不像我上面的示例输出那样捆绑在一起。更不用说它 留下了右边的用户 UserFbID

SQL 大师会很高兴告诉我我缺少什么(或忘记能够使用)!

您需要使用 usertbl table 两次 - 一次用于 leftname(别名 a1),另一次用于 rightname(别名 a2).

SQL> select b.leftid, b.rightid, a1.name as leftname, a2.name as rightname
  2  from othertbl b join usertbl a1 on a1.mid = b.leftid
  3                  join usertbl a2 on a2.mid = b.rightid;

    LEFTID    RIGHTID LEFTNAME     RIGHTNAME
---------- ---------- ------------ ------------
     54688      12345 Steve Jobs   Bob Barker
     56999      53166 Adam Sandler Bill Gates
     87540      87540 MC Hammer    MC Hammer

SQL>