2011-12-05 56 views
1

我必須根據可能爲1,2,3,4或空的列「限定符」將一些數據分組爲類別。 問題是「空」不被視爲「分組依據」類別。SQL:如何使GROUP BY查詢Considerin'也爲空字段

這裏是我的查詢:

SELECT m.id, m.name, COUNT (*) 
FROM _gialli_g2bff_distinct AS g 
INNER JOIN flag.qualifier_flags AS m ON g.qualifier = m.id 
GROUP BY m.name, m.id 
ORDER BY m.id; 

這裏的答案:

 
1 | "NOT_CONTRIBUTES_TO" | 2 
2 | "CONTRIBUTES_TO"  | 411 
3 | "COLOCALIZES_WITH" | 200 
4 | "NOT"    | 983 

這個答案的問題是,它並沒有考慮到所有具有資格字段爲空的元素。 這是我想擁有的答案是什麼:

 
1 | "NOT_CONTRIBUTES_TO" | 2 
2 | "CONTRIBUTES_TO"  | 411 
3 | "COLOCALIZES_WITH" | 200 
4 | "NOT"    | 983 
5 |      | 1854 

我怎麼能修改我的查詢?

感謝

回答

8

你的問題不是在GROUP BY存在的水平,而是在JOIN。具有NULL限定符的行不能JOIN,因爲您使用INNER JOIN,所以它們不在結果集中。

使用LEFT OUTER JOIN查看所有行。

+0

+1好,趕不上。 – Yuck

+2

拉里的回答只是擴充'選擇m.id,m.name,COUNT(*)FROM _gialli_g2bff_distinct爲G LEFT JOIN flag.qualifier_flags爲M ON g.qualifier = m.id GROUP BY m.name,男.id ORDER BY m.id;' – xQbert