MySQL中的计数和组非空值
问题描述:
我需要计算由特定ID分组的非空(由此我指的是一个包含至少1个字符的字符串)行。例如。我的数据可能是这样的:MySQL中的计数和组非空值
form_id mapping
1 'value_1'
1 ''
1 'value_2'
2 ''
2 NULL
3 'value_3'
,我想指望每种形式的非空值,所以我希望结果是这样的:
form_id mapping_count
1 2
2 0
3 1
如果空值分别为所有NULL,我想我可以使用
SELECT form_id, count(mapping) FROM table GROUP BY form_id
...但这将包括计数,我不想要的零长度的字符串。
我可以使用where子句仅返回映射列中存在值的行,但我想返回没有映射的表单ID,因此也不行。
我猜我需要某种子查询,但我很难把它放在一起。
答
SELECT form_id, COUNT(NULLIF(TRIM(mapping), ''))
FROM mytable
GROUP BY
form_id
这将不计算不包含至少一个非空白字符(包括空白字符串,空字符串和NULL
S)的记录。
如果一个非空的所有空白字符串是有效的,使用此:
SELECT form_id, COUNT(NULLIF(mapping, ''))
FROM mytable
GROUP BY
form_id
大,感谢 - 我还没有跨越NULLIF功能之前。正是我需要的。 :) – Russ 2010-02-25 15:20:37