多列中的MySQL计数(和求和)字段,其中“非空”

时间:2012-03-06 14:42:54

标签: mysql count

我正在使用这个MySQL查询

SELECT COUNT(pros_a) + COUNT(pros_b) + COUNT(pros_c) + COUNT(pros_d) + COUNT(pros_e) AS pros_total FROM my_table WHERE contentid = 'id'

对每列中的字段进行计数和求和。但是这会返回所有字段(完整和空)。我想只计算填充字段,不包括空字段。我怎样才能做到这一点?只是一点点......困惑! :)

任何帮助都将非常感谢! 感谢

编辑:

MY_TABLE

pros_a   pros_b   pros_c   pros_d   pros_e
-------  ------   ------   ------   ------
good     (empty)  good     good     (empty)

预期结果

pros_total
----------
3

3 个答案:

答案 0 :(得分:1)

COUNT(column)函数不会计算NULL字段。它虽然计算了空(零长度)字符串。

您可以将这些更改为:

COUNT( CASE WHEN column <> '' THEN column END )

或:

SUM(column <> '')

最后一个在MySQL工作,因为TRUE被评估为1FALSE被评估为0

答案 1 :(得分:0)

SELECT COUNT(DISTINCT pros_a) + COUNT(DISTINCT pros_b) + COUNT(DISTINCT pros_c) + COUNT(DISTINCT pros_d) + COUNT(DISTINCT pros_e) FROM my_table WHERE contentid = 'id'

上述应该有效。

答案 2 :(得分:0)

在空字段的where where条件下使用,例如WHERE pros_a!=''或pros_a!='0'如果为NULL。 pros_a!=''AND pros_b!=''