我有一個有趣的挑戰...我有兩個表,products
和users
。MySQL左連接多行
products
包含2列user_id
和current_bidder
,它們保存users
表中的兩個不同的ID。
我想從products
中選擇所有列,並從users
表中選擇每個user_id
和current_bidder
的名稱和等級。
本質上,我試圖從連接表上的兩個不同行中選擇列,同時消除他們的名字。
任何幫助將不勝感激。
我有一個有趣的挑戰...我有兩個表,products
和users
。MySQL左連接多行
products
包含2列user_id
和current_bidder
,它們保存users
表中的兩個不同的ID。
我想從products
中選擇所有列,並從users
表中選擇每個user_id
和current_bidder
的名稱和等級。
本質上,我試圖從連接表上的兩個不同行中選擇列,同時消除他們的名字。
任何幫助將不勝感激。
加入到用戶表兩次,並給每個副本一個不同的別名。事情是這樣的:
select p.name, p.weight, owner.name, bidder.name
from product p
join user owner
on ...
join user bidder
on ...
的很好的方式,以避免列之間的模糊是在其上添加一個ALIAS
。
SELECT a.*, -- selects all records from products
b.name AS user_name, -- user_name is an alias of users.name (user_id)
c.name AS bidder_name -- user_name is an alias of users.name (current_bidder)
FROM products a
LEFT JOIN users b
ON a.user_id = b.id
LEFT JOIN users c
ON a.current_bidder = c.id
爲什麼我用LEFT JOIN
是因爲我認爲有些產品沒有bidder
但原因。如果使用INNER JOIN
,則直到有投標者纔會在結果中顯示產品。
更清楚'選擇p.blah作爲pblah,q.blah作爲qblah'因爲OP也在問清楚 –
好建議@LuisSiquot。更新。 –