Mysql按日期订购
这是我试图获取前30天数据的查询Mysql按日期订购,mysql,Mysql,这是我试图获取前30天数据的查询 SELECT DAY(calendar.datefield) AS callDay, DATE_FORMAT(calendar.datefield,"%d-%m-%Y") AS DataDate, COUNT(user_appoint.`id`) AS total_appt, SUM(CASE WHEN status_id=6 THEN 1 ELSE 0 END) AS fit, SUM(CASE WHEN status_
SELECT DAY(calendar.datefield) AS callDay,
DATE_FORMAT(calendar.datefield,"%d-%m-%Y") AS DataDate,
COUNT(user_appoint.`id`) AS total_appt,
SUM(CASE WHEN status_id=6 THEN 1 ELSE 0 END) AS fit,
SUM(CASE WHEN status_id=7 THEN 1 ELSE 0 END) AS unfit,
SUM(CASE WHEN status_id=1 THEN 1 ELSE 0 END) AS pending,
SUM(CASE WHEN status_id=19 THEN 1 ELSE 0 END) AS reexamined
FROM user_appoint
RIGHT JOIN calendar ON DATE(user_appoint.`ApptDateTime`) = calendar.`datefield` AND user_appoint.`comp_id` = 123
WHERE calendar.datefield BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW()
# and user_appoint.`comp_id` = 123
GROUP BY calendar.`datefield`
ORDER BY datadate ASC
查询的输出如下所示:-
callDay DataDate total_appt fit unfit pending reexamined
------- ---------- ---------- ------ ------ ------- ------------
...
14 14-01-2016 0 0 0 0 0
15 15-01-2016 3 0 0 3 0
16 16-01-2016 0 0 0 0 0
17 17-01-2016 0 0 0 0 0
18 18-01-2016 0 0 0 0 0
20 20-12-2015 0 0 0 0 0
21 21-12-2015 0 0 0 0 0
22 22-12-2015 1 1 0 0 0
23 23-12-2015 0 0 0 0 0
...
这是给我的数据,本月的升序格式和之后的数据,前一个月的升序格式。我希望上个月的升序格式的数据与当前月份的asc格式的数据相同或更低。您按照从日期开始创建的字符串进行排序,因此按字母顺序排列 改为按日期排序:
order by calendar.datefield asc;
您按照从日期开始创建的字符串进行排序,因此得到字母顺序 改为按日期排序:
order by calendar.datefield asc;
我总是觉得读取正确的联接有点困难,特别是因为它们的ON子句不引用联接表,而是引用其他表(
和user_appoint.comp_id=123
)。我知道很多人都有这种观点,所以为了可读性,您可能需要重新编写查询以使用左连接。我总是觉得读取右连接有点困难,特别是因为他们的ON子句不引用连接表,而是引用其他表(和user_appoint.comp_id=123
)。我知道很多人都有这种观点,所以为了可读性,您可能需要重新编写查询,使用左连接。