我正在使用这个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
答案 0 :(得分:1)
COUNT(column)
函数不会计算NULL
字段。它虽然计算了空(零长度)字符串。
您可以将这些更改为:
COUNT( CASE WHEN column <> '' THEN column END )
或:
SUM(column <> '')
最后一个在MySQL工作,因为TRUE
被评估为1
而FALSE
被评估为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!=''