在一个查询中执行多个MySQL计数?

时间:2010-10-16 21:57:17

标签: mysql count

我知道下面的查询无效,但我只是将它作为我想要实现的例子。

基本上我想做的是获得所有行的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;

有没有比运行多个查询更好的方法呢?

2 个答案:

答案 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;