嘿,我有一個 SQL 查詢問題,我一直在嘗試解決一些問題,只是無法提出正確的查詢來執行它。
我想要做的是查看 2 張桌子。每個表都有一個相互匹配的唯一 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 個表中得到的是在一起的 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
上面的這個查詢確實輸出了資料,但它不像我上面的示例輸出那樣捆綁在一起。更不用說它離開了 rightUserFbID 上的用戶。
SQL 大師會很高興告訴我我缺少什么(或忘記能夠使用)!
uj5u.com熱心網友回復:
您需要使用該usertbl表兩次 - 一次用于leftname(alias a1),另一次用于rightname(alias 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>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/413587.html
標籤:
