Sla*_*lam 7 mysql sql null field count
如何按字段/列计算非空条目?我看到几个按行计数的答案,但不能破解如何对列进行操作.
输入:
?????????????????????????????????
? id ? field1 ? field2 ? field3 ?
? 1 ? do ? re ? me ?
? 2 ? fa ? ? so ?
? 3 ? la ? te ? ?
? 4 ? da ? re ? ?
?????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
输出:
id 4
field1 4
field2 3
field3 2
Run Code Online (Sandbox Code Playgroud)
我正在尝试在我正在迁移的非常脏的数据库中查看字段使用情况.这个数据库中有大约50列,所以我正在寻找一种不涉及键入每个列名的方法.
我可能还必须将该搜索扩展为非NULL&is-not-empty&≠0&≠"no",因为数据存储不一致 - 某些字段从未使用过,但自动填充为"no".
这个答案看起来很接近我需要的但是生成了一个SQL错误而且我没有足够的声誉来评论:SQL中每列中的NULL值的计数
只需使用count():
select count(field1), count(field2), count(field3)
from table t;
Run Code Online (Sandbox Code Playgroud)
这就是它的count()作用——它计算非 NULL 值。
如果您讨厌键入名称,请使用元数据表(通常information_schema.columns)来获取列名称。您可以生成 SQL 作为查询,或将列名称复制到电子表格中以生成代码。
编辑:
您可以使用以下方法生成代码:
select group_concat('count(', column_name, ')' separate ', ')
from information_schema.columns
where table_name = <whatever> and table_schema = <whatever2>;
Run Code Online (Sandbox Code Playgroud)
请注意,这使用了鲜为人知的group_concat()获取多个字符串参数的功能。