2015-11-08 83 views
1

我的查询:MySQL的左连接的查询返回值NULL

SELECT DISTINCT img.prd_id,prd.*,img.* FROM products_prd prd OUTER JOIN 
prd_images_img img ON prd.prd_id=img.prd_id ORDER BY prd.prd_datetime 

在products_prd主键返回NULL。他们有价值。而img.prd_id可能是NULL或不是。

+0

请为我们提供创建表语句以及一些示例数据。 – hwde

+0

我假设你的连接应该是基于问题标题的'LEFT OUTER JOIN'。 –

回答

1

问题是,您有名称冲突 - 例如,称为prd_id的两件事。您需要使用别名来重命名列:

SELECT prd.*, img.col1 as img_col1, img.col2 as img_col2 
FROM products_prd prd LEFT OUTER JOIN 
    prd_images_img img 
    ON prd.prd_id = img.prd_id 
ORDER BY prd.prd_datetime; 

您不需要选择prd_id两次。

或者,你可以使用USING,而不是ON

SELECT * 
FROM products_prd prd LEFT OUTER JOIN 
    prd_images_img img 
    USING (prd_id) 
ORDER BY prd.prd_datetime; 

这个USING子句中返回列只有一次(虽然你可以有与其他列的问题,如果他们有两个表中相同名称)。

+0

感谢您的建议工作一点修改的人。 –