【问题标题】:Mysql count columns of users, and group by modified dateMysql统计用户列数,并按修改日期分组
【发布时间】:2010-10-30 20:21:17
【问题描述】:

我想要从 2 列中获取数据。基本上我想每天看到新的注册。放轻松,我第一天使用 mysql(或任何数据库)

到目前为止我有这个

mysql> select created, count(id) from user group by created;
+---------------------+-----------+
| created             | count(id) |
+---------------------+-----------+
| 2009-05-27 00:58:56 |         1 | 
| 2009-05-27 01:27:30 |         1 | 
| 2009-05-27 02:35:37 |         1 | 
| 2009-05-27 02:58:56 |         1 | 
| 2009-05-27 03:36:03 |         1 | 
| 2009-05-27 03:38:03 |         1 | 
| 2009-05-27 03:48:16 |         1 | 
| 2009-05-27 03:51:37 |         1 | 

我想要的输出是

+---------------------+----------------------+
| created             | user                 |
+---------------------+----------------------+
| 2009-05-27          | 10                   |
| 2009-05-28          | 13                   | 
| 2009-05-29          | 19                   | 

感谢任何帮助!

谢谢

【问题讨论】:

    标签: mysql select count


    【解决方案1】:
    select DATE(created), count(id) from user group by DATE(created);
    

    【讨论】:

    • +1 以获得快速和正确的答案。您还可以添加列别名,以便更轻松地访问所选语言的查询结果。
    【解决方案2】:
    SELECT DATE(created) as date, count(1) as nrRegistered
    FROM user
    GROUP BY date
    

    注意:通过计数 1 而不是 id,我们可以避免在表中查找并启用仅索引查询

    【讨论】:

    • 假设创建的字段被索引了。
    • 是的。它还假设 MySQL 不够聪明,无法使用在执行 count(id) 时附加到索引的 id(很可能是主键)。所以我不得不承认这是一个相当松散的音符。但我并没有说我的查询强制进行仅索引连接,只是它使之成为可能。我建议在查询中使用 EXPLAIN [...] 来确保。
    • 澄清:如果存储引擎是InnoDB,而不是MyISAM,则附加主键。
    猜你喜欢
    • 2022-12-01
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2013-11-05
    相关资源
    最近更新 更多