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>
嘿,我有一个 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>