我遇到了一个有趣的挑战......我有两个表,products
和users
。
products
包含2列,user_id
和current_bidder
,其中包含users
表中的两个不同的ID。
我想从products
中选择所有列,并从users
表中为每个user_id
和current_bidder
选择名称和评级。
基本上,我正在尝试从连接表上的两个不同行中选择列,同时消除其名称的歧义。
非常感谢任何帮助。
答案 0 :(得分:4)
两次加入用户表,并为每个副本提供不同的别名。像这样:
select p.name, p.weight, owner.name, bidder.name
from product p
join user owner
on ...
join user bidder
on ...
答案 1 :(得分:0)
避免列之间含糊不清的好方法是在其上添加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
,则产品将永远不会显示在结果上,直到有投标人为止。