左连接重复列

时间:2012-04-22 02:44:55

标签: mysql

我在数据库中有两个表。一个是产品图像,另一个是产品图像。我正在加入表格,以便我可以通过一个查询获得产品图像和信息:

SELECT * 
from items left join images 
     on items.item_id = images.item_id and 
        items.display_items = '1' and items.active = '1' 
order by items.item_year desc, items.fullname desc, images.position asc
但是,我注意到所有的产品都没有出现。有些产品没有任何图像,而那些图像没有出现。我在Sequel Pro中运行了查询,发现列item_id出现了两次,一次是id,一次是NULL。如何修复我的查询以获取所有产品?

2 个答案:

答案 0 :(得分:2)

我会修改您的查询,以在结果中指定所需的确切列,而不是使用“select *”。在这种情况下,您可能在2个表中具有相同名称的列(例如“item_id”),这可能会导致“select *”出现问题。

另外,我会把你的ON语句的第二行放在WHERE子句中。 “items.display_items ='1'和items.active ='1'”不适用于您的加入,而是适用于您想要的项目集。

修订查询:

SELECT --explicit list of columns 
from items 
    left join images 
    on items.item_id = images.item_id  
WHERE items.display_items = '1' and items.active = '1' 
order by items.item_year desc, items.fullname desc, images.position asc

答案 1 :(得分:0)

你错过了一个WHERE子句。假设您只想要items的数据,请尝试以下方法:

SELECT it.* 
FROM items it
LEFT JOIN images im 
ON it.item_id = im.item_id
WHERE it.display_items = '1' and it.active = '1' 
ORDER BY it.item_year desc, it.fullname desc, im.position asc