如果SELECT * COUNT为空,则SQL返回0,SQL查询

时间:2018-10-26 23:02:41

标签: sql sqlite

请给我任何建议。

我需要打印出包括“ 0”的内容。

例如,我想执行以下操作,其中包括值“ d”和“ 0”,但我的实际查询仅打印到第三行(c,3)

des   num   
---------
 a     1   
 b     2     
 c     3     
 d     0

这是我的代码

SELECT des, COUNT(*) AS num 
FROM table 
WHERE color = 'Red' AND day = 17 
GROUP BY des

非常感谢您提出任何建议

3 个答案:

答案 0 :(得分:0)

使用‘coalesce’...我很确定那里有很多例子。  试试这个

  select coalesce(des, 0) as num

答案 1 :(得分:0)

SQL语句中的WHERE子句将要分组的行数限制为具有color='Red' and day=17的行。
在返回要分组的行中,没有任何des='d'行,这就是为什么要得到此结果的原因。
以下语句获取您的语句获取的所有行以及color='Red' and day=17排除的行:

SELECT des, COUNT(*) AS num FROM table 
WHERE color='Red' and day=17 GROUP BY des
union
SELECT DISTINCT des, 0 AS num FROM table 
WHERE des NOT IN (SELECT des FROM table WHERE color='Red' and day=17)

答案 2 :(得分:0)

仅使用条件聚合:

SELECT des,
       SUM(CASE WHEN color = 'Red' AND day = 17 THEN 1 ELSE 0 END) AS num 
FROM table 
GROUP BY des;

这可能是实现所需目标的最简单方法。