我有一个有趣的挑战...我有两个表,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。更新。 –