select count(字段1)+count(字段2) num from tableName where id=1。
如果字段数量有限的话,你把要这10个字段添加进去就行了。
count(字段)会自动统计不等于null的列。
我的想法:
1,SQL不是万能的,不会的需求,用编程语言来做。
case when RbAd10 is null then RbAd9
...
end
使用case when 对每一个列进行判断,如果不为null则标记为1,如果是null则标记为0
之后根据分组,将后面的十个字段想加
建议使用case when 或者ifnull/isnull之类的方式判断后再相加,
如果用count这个聚合函数,查询效率可能会变低,因为这里本来就是一行,不需要聚合。
另外,如果你数据里的值要么为空要么是8位时,其实可以全部都拼接起来,获取字符串长度,然后除以8就行了
length(CONCAT(IFNULL(RbAd1,''),IFNULL(RbAd2,''),IFNULL(RbAd3,'')))/8
可以count,也可以用case when 字段1 is null then 0 else 1 end