2015-11-08 62 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

感謝您的建議工作一點修改的人。 –