mysql - 获取数据集中多列不为 NULL 的行数?

标签 mysql null

我的查询:

SELECT name,address,phone,fax FROM clients WHERE state='TX';

我想知道的是如何获取每列中包含数据的行数 - 因为某些字段可能为 NULL,但我想知道结果集中有多少实际上有数据。

我不想以任何其他方式限制我返回的结果集,我已经在上面用 WHERE 子句完成了。例如,除了结果集之外,我还想返回的是:名称字段中具有数据(不为 NULL)的字段数以及地址字段等的相同内容

我不需要每一列,只是一些列。

最佳答案

请注意:

sum(if(name    is null, 0, 1)) as have_names

相当于(但更慢):

count(name) AS have_names

至于最初的问题,因为 SELECT 返回行/列的表格列表,您的问题是计数适合哪里?如果您将它们作为额外的行返回,它们将位于错误的列中,如果您将它们作为额外的列返回,则每行都会得到一个。

所以你需要做两个查询...

关于mysql - 获取数据集中多列不为 NULL 的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6004303/

相关文章:

c# - 模棱两可的调用匹配困惑

java/jackson - @JsonValue/@JsonCreator 和 null

MySQL - 错误 #1064 - 删除记录 phpmyadmin

php - 一个查询调用中的 PDO 多个语句以 "unbuffered queries"错误结束

mysql - 错误 1054 (42S22) : Unknown column

php - JQuery 根据不同选择框的选定值使选择框在页面加载时可见

java空值检查语法差异

php - 时间数组找到一个比设定时间早 15 分钟的时间

php - 更改 phpmyadmin 中的配置文件

java - 检查 'null' 的条件