mysql - 如果分组依据没有返回值,则显示零

标签 mysql sql

我试图让过去 7 天内注册的用户数量显示在图表上,如果 mysql 返回 0 而不是无行,那就太好了。目前,它只为每一天返回一行,它有一个值

SELECT   date(created_at), 
         count(id) 
FROM     user_accts 
WHERE    date(created_at) < NOW() 
AND      date(created_at) > DATE_SUB(NOW(), INTERVAL 7 DAY) 
GROUP BY date(created_at);

最佳答案

尝试:

SELECT DATE_SUB(CURDATE(), INTERVAL i DAY) date_created_at, 
       count(id) 
FROM (SELECT 1 i UNION ALL 
      SELECT 2 UNION ALL 
      SELECT 3 UNION ALL 
      SELECT 4 UNION ALL 
      SELECT 5 UNION ALL 
      SELECT 6 UNION ALL 
      SELECT 7) i
LEFT JOIN user_accts ON  date(created_at) = DATE_SUB(CURDATE(), INTERVAL i DAY)
                   /*AND owner_id = '131'*/
GROUP BY DATE_SUB(CURDATE(), INTERVAL i DAY)

关于mysql - 如果分组依据没有返回值,则显示零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14772000/

相关文章:

sql - Oracle sql 终止符筛选(+奇怪的行为)

c# - Linq 查询中的 If 语句

sql - 如何优化这个 AspNetIdenty/Entity Framework 生成的查询?

php - 尝试在 PHP 中组合数组中的值

mysql - 在现有项目上从 sqlite3 更改为 mysql

php - 选择 Doctrine (Symfony 2) 中一列为 false 的所有内容

mysql - 在一个表中使用联接

MySql - 如何获取最后一个 ALTER TABLE 的日期时间?

sql - 按 dense_rank() 对行进行分组并遍历每个子组并比较该子组下一行中的另一列?

c# - 使用 Blob 在 SQLite 中存储字节数组