我有一個奇怪的問題與MySQL計數。當我執行再次mysql「計數不同」
SELECT a.inc AS inc,
a.cls AS cls,
a.ord AS ord,
a.fam AS fam,
a.subfam AS subfam,
a.gen AS gen,
aspec AS spec,
asubspec AS subspec
FROM a
WHERE (ainc = 11)
我獲得:
,這是很正常的,因爲我有2個記錄。
當我執行
SELECT COUNT(DISTINCT a.inc) AS inc,
COUNT(DISTINCT a.cls) AS cls,
COUNT(DISTINCT a.ord) AS ord,
COUNT(DISTINCT a.fam) AS fam,
COUNT(DISTINCT asubfam) AS subfam,
COUNT(DISTINCT a.gen) AS gen,
COUNT(DISTINCT a.spec) AS spec,
COUNT(DISTINCT a.subspec) AS subspec
FROM a
WHERE (a.inc = 11)
GROUP BY a.inc
我獲得
,並因爲當你看到gen, spec and subspec
有一行0值,這是奇怪的。 我知道count distinct
不會計入零值。我要統計所有值= 0和計數明顯我想
`1 | 2 | 2 | 2 | 2 | 1 | 1 | 1 |`
之後我也嘗試:
SELECT COUNT(DISTINCT a.inc) AS inc,
SUM(if(a.cls <> 0, 1, 0)) AS cls,
SUM(if(a.ord <> 0, 1, 0)) AS ord,
SUM(if(a.fam <> 0, 1, 0)) AS fam,
SUM(if(a.subfam <> 0, 1, 0)) AS subfam,
SUM(if(a.gen <> 0, 1, 0)) AS gen,
SUM(if(a.spec <> 0, 1, 0)) AS spec,
SUM(if(a.subspec <> 0, 1, 0)) AS subspec
FROM a
GROUP BY a.inc
和
SELECT COUNT(DISTINCT a.inc) AS inc,
SUM(DISTINCT if(a.cls <> 0, 1, 0)) AS cls,
SUM(DISTINCT if(a.ord <> 0, 1, 0)) AS ord,
SUM(DISTINCT if(a.fam <> 0, 1, 0)) AS fam,
SUM(DISTINCT if(a.subfam <> 0, 1, 0)) AS subfam,
SUM(DISTINCT if(a.gen <> 0, 1, 0)) AS gen,
SUM(DISTINCT if(a.spec <> 0, 1, 0)) AS spec,
SUM(DISTINCT if(a.subspec <> 0, 1, 0)) AS subspec
FROM a
GROUP BY a.inc
,但它不是在第一,因爲工作方法不會使所有重複值大於0;在第二種情況下,它只給1和0。
那麼,有人可以幫助我嗎?先謝謝你。獅子座
什麼讓你覺得DISTINCT不計算0值?它不會計算_NULL_值,但NULL不等於0. – Barmar