2013-07-27 63 views
2

我有這樣的查詢:獲取結果甚至空場上

SELECT * FROM customer AS c, customer_group AS cg 
WHERE c.customer_id = '10002' AND c.customer_group_id = cg.customer_group_id 

當「customer_group_id」字段爲空對數據庫ID(10002),它不會顯示。請幫我解決這個問題。如果'customer_group_id'字段對於該ID不是NULL,它將顯示。

回答

3

使用左連接:

SELECT * 
FROM customer AS c 
LEFT JOIN customer_group AS cg 
    ON c.customer_group_id = cg.customer_group_id 
WHERE c.customer_id = '10002' 

語法您使用聯接表(這是近20年前取代)實際上是一個INNER JOIN,這要求那裏是加入一行爲第一個表中的行返回。

LEFT JOIN將始終從第一個表中返回行,但如果沒有連接的行,則空值將位於連接的表的列中。

+1

你能解釋我的查詢有什麼問題,爲什麼它應該使用連接? –

+1

[This](http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html)可能有助於揭開加入類型 – Orangepill

+4

@AldryWijaya的解釋。你應該*永遠不*像你一樣加入表格。這在1996年由JOIN關鍵字在SQL標準中取代。 – Bohemian