我正在使用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天的数据。
答案 0 :(得分:0)
您的查询是“创建者” ASC排序或升序。这意味着记录将按“创建”列从最小到最大的顺序排序。您的结果将在顶部列出2019-08-12的行,在底部列出2019-08-19的行。由于共有8行,并且您将结果限制为返回7,因此2019-08-19中的行将不会显示在结果中。
只需将'ASC'替换为'DESC',您就应该获得想要的结果。