GROUP BY DAYNAME不包括今天的记录吗?

时间:2019-08-19 11:11:25

标签: mysql

我正在使用SQL语句通过PHP通过ajax将按天分组的日期和总和发送到JavaScript图表。该语句不返回今天存在的记录。

我已经进行了通用选择,以确保有今天的记录。

要重新创建,您将需要一个带有日期时间Created字段和一个整数price字段的表,该字段具有最近8天(包括今天)的记录。

+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| Created | datetime    | YES  |     | NULL    |                |
| price   | int(10)     | YES  |     | NULL    |                |
+---------+-------------+------+-----+---------+----------------+

样本数据

2019-08-12 23:04:03      7 
2019-08-13 00:22:20      7 
2019-08-13 22:41:13      7 
2019-08-13 23:23:23      7 
2019-08-13 23:37:27      7 
2019-08-14 03:53:29      7 
2019-08-14 23:15:22      7 
2019-08-14 23:44:17      7 
2019-08-14 23:52:01      7 
2019-08-15 00:24:47     20 
2019-08-15 00:24:49      7 
2019-08-15 00:45:53      7 
2019-08-16 22:03:01      7 
2019-08-16 23:13:03      7 
2019-08-16 23:28:25      7 
2019-08-16 23:43:05      7 
2019-08-17 00:26:22      7 
2019-08-17 00:32:38      7 
2019-08-17 00:41:14      7 
2019-08-17 04:45:11      7 
2019-08-17 06:38:33      7 
2019-08-17 08:55:23     20 
2019-08-17 09:13:39      7 
2019-08-17 23:12:00      7 
2019-08-17 23:54:23      7 
2019-08-18 00:26:11      7 
2019-08-18 23:28:21      7 
2019-08-18 23:28:54     20 
2019-08-19 00:52:18      7 
2019-08-19 10:19:58      7

查询

SELECT DAYNAME(Created) AS theday,SUM(price) AS thesum 
FROM mytable 
GROUP BY DAYNAME(Created) 
ORDER BY Created asc LIMIT 7;

我希望上面的代码能返回最近7天(包括今天)的数据,但它会返回到昨天为止的最近7天的数据。

1 个答案:

答案 0 :(得分:0)

您的查询是“创建者” ASC排序或升序。这意味着记录将按“创建”列从最小到最大的顺序排序。您的结果将在顶部列出2019-08-12的行,在底部列出2019-08-19的行。由于共有8行,并且您将结果限制为返回7,因此2019-08-19中的行将不会显示在结果中。

只需将'ASC'替换为'DESC',您就应该获得想要的结果。