Pav*_*kis 2 sql t-sql sql-server
假设我们有两个表:
表TA
AID BID1 BID2
-- ---- ----
01 01 02
02 01 03
03 02 01
Run Code Online (Sandbox Code Playgroud)
表TB
BID Name
--- ----
01 FOO
02 BOO
03 LOO
Run Code Online (Sandbox Code Playgroud)
如果我想返回以下内容:
AID Name1
-- -----
01 FOO
02 FOO
03 BOO
Run Code Online (Sandbox Code Playgroud)
我写了以下内容:
SELECT TA.AID, TB.Name as Name1
FROM TB
INNER JOIN TA on TB.BID = TA.BID1
Run Code Online (Sandbox Code Playgroud)
但是,我无法弄清楚如何返回对应于BID1和BID2的TB.Name.更具体地说,我想返回以下内容:
AID Name1 Name2
-- ----- -----
01 FOO BOO
02 FOO LOO
03 BOO FOO
Run Code Online (Sandbox Code Playgroud)
您可以多次加入:
SELECT TA.AID, tb1.Name AS Name1, tb2.Name AS Name2
FROM TA
LEFT JOIN TB tb1
ON TA.BID1 = tb1.BID
LEFT JOIN TB tb2
ON TA.BID2 = tb2.BID;
Run Code Online (Sandbox Code Playgroud)
注意:即使没有匹配LEFT OUTER JOIN,TA也能确保始终获得所有记录.
只需再使用一个连接
SELECT TA.AID, TB.Name as Name1, T1.Name as Name2
FROM TB
INNER JOIN TA on TB.BID=TA.BID1
INNER JOIN TB T1 on T1.BID=TA.BID2;
Run Code Online (Sandbox Code Playgroud)