2015-02-10 59 views
0

我有一個結果列表,只能顯示少數幾個狀態,但我需要顯示每次狀態的完整列表。MySQL - 即使計數爲零,也將結果與列表進行匹配

結果回來是這樣的:

AK 1 
AL 5 
CA 3 
... 
WV 4 
WY 6 
UN 10 

而應該回來爲:

AK 1 
AL 5 
AR 0 
AZ 0 
CA 3 
CO 0 
CT 0 
... 
WV 4 
WY 6 
UN 10 

難道只是一個內部的物質加入對抗狀態,以確保名單總是有狀態的計數爲零?我沒有任何國家的表格,但是我有一個像「AK」,「AL」,「AR」等等的狀態列表。我不確定是否有可能像那樣加入。該查詢太大而無法發佈,但如果需要的話,我會看看我是否可以提出一些建議。

+0

你有查詢你已經使用? – 2015-02-10 04:48:55

+0

使用子查詢而不是聯接(在子查詢中使用count) – parveen 2015-02-10 04:51:00

+0

mysql優化聯接更好;必須小心使用子查詢,並確定mysql如何處理它們。但內心連接在這裏無濟於事;使用下面的答案中建議的LEFT JOIN。 – Andras 2015-02-10 05:12:20

回答

2

你可以LEFT JOIN到狀態的列表,像這樣:

SELECT a.St 
     ,COUNT(b.St) AS Ct 
FROM State_List a 
LEFT JOIN Other_Table b 
    ON a.St = b.St 
GROUP BY a.St 

LEFT JOIN將從表回報的加盟左側非加盟的記錄,在這種情況下狀態的列表。然後我們COUNT()從表中可能或不可以加入的字段。

+0

如果我加入一張桌子,那就沒問題,但加入像「AK」,「AL」,「AR」等列表怎麼辦? – 2015-02-10 13:43:56

+0

我相信你需要把你的列表變成一張表。 – 2015-02-10 14:27:46

相關問題