我的查询:
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/