我知道下面的查询无效,但我只是将它作为我想要实现的例子。
基本上我想做的是获得所有行的COUNT()和&然后还在一个查询中获得带有条件子句的COUNT()行。
比如..
SELECT
COUNT(*) AS full_amount,
COUNT(address IF NOT NULL),
COUNT(name IF NOT NULL)
FROM
table;
现在,我正在努力找到的是桌子和桌子的全部数量。我还试图找出表中“地址”和“行”的行数。 'name'字段不是NULL。不是它们都不是空的,而是单独的。
为了进一步解释,这就是如何使用多个查询,我试图避免这种情况。
SELECT COUNT(*) FROM table AS amount;
SELECT COUNT(*) FROM table AS amount WHERE address IS NOT NULL;
SELECT COUNT(*) FROM table AS amount WHERE name IS NOT NULL;
有没有比运行多个查询更好的方法呢?
答案 0 :(得分:4)
你快到了 - COUNT计算其参数为非NULL的行数:
SELECT COUNT(*) AS full_amount,
COUNT(address) AS has_address,
COUNT(name) AS has_name
FROM table;
另请参阅COUNT(DISTINCT ...)以计算不同非NULL值的数量。
答案 1 :(得分:0)
你可以使用这个技巧来做到这一点:
SELECT COUNT(*),
SUM(IFNULL(address, 0, 1)) AS address_count,
SUM(IFNULL(name, 0, 1)) as name_count
FROM Table;