Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL按日期排序,按日期分组格式为字母顺序_Mysql_Sql_Mariadb - Fatal编程技术网

MySQL按日期排序,按日期分组格式为字母顺序

MySQL按日期排序,按日期分组格式为字母顺序,mysql,sql,mariadb,Mysql,Sql,Mariadb,这是我的疑问: Select Date_format(`date`, '%b %Y') as 'Categories', ..... as 'a1',....... as 'a2' FROM table1 GROUP BY Date_format(`date`, '%b %Y') ORDER BY Date_format(`date`, '%b %Y') ASC 答案是按字母顺序的,因为,date_格式将日期转换为字符串,我需要按日期排序,但是,分组方式是问题所在。我只需要日期格式为'Date

这是我的疑问:

Select Date_format(`date`, '%b %Y') as 'Categories',
..... as 'a1',....... as 'a2'
FROM table1
GROUP BY Date_format(`date`, '%b %Y')
ORDER BY Date_format(`date`, '%b %Y') ASC
答案是按字母顺序的,因为,date_格式将日期转换为字符串,我需要按日期排序,但是,分组方式是问题所在。我只需要日期格式为'Date','%b%Y'的分组依据


请给出一个解决方案当然是按字母顺序排列的。您正在按字符串排序。尝试:

ORDER BY MIN(date) ASC
这将按日期值排序


请注意,在问题的原始版本中,日期前后有单引号。这不会按任何顺序排列,因为“date”是一个包含四个字母的字符串。

当然是按字母顺序排列的。您正在按字符串排序。尝试:

ORDER BY MIN(date) ASC
这将按日期值排序

请注意,在问题的原始版本中,日期前后有单引号。这将不会按任何顺序排列,因为“date”是一个包含四个字母的字符串。

只需执行以下操作:

Select Date_format(`date`,'%b %Y') as 'Categories',
..... as 'a1',....... as 'a2'
FROM table1
GROUP BY Date_format(`date`,'%b %Y')
ORDER BY `date` ASC
只要这样做:

Select Date_format(`date`,'%b %Y') as 'Categories',
..... as 'a1',....... as 'a2'
FROM table1
GROUP BY Date_format(`date`,'%b %Y')
ORDER BY `date` ASC

我用双引号解决了这个问题

Select Date_format(`date`, '%b %Y') as 'Categories',
..... as 'a1',....... as 'a2'
FROM table1
GROUP BY Date_format(`date`, '%b %Y')
ORDER BY "categories" ASC

我用双引号解决了这个问题

Select Date_format(`date`, '%b %Y') as 'Categories',
..... as 'a1',....... as 'a2'
FROM table1
GROUP BY Date_format(`date`, '%b %Y')
ORDER BY "categories" ASC

在表和列名周围使用反勾号,而不是单引号。啊,是的。你说得对。他们在复制/粘贴原始问题的过程中被转换…在这种情况下,“日期”也应该在“选择”中,还是不在?谢谢,不一定。您可以对任何喜欢的列进行排序,而不必将它们包含在select子句中。在表名和列名周围使用反勾号,而不是单引号。啊,是的。你说得对。他们在复制/粘贴原始问题的过程中被转换…在这种情况下,“日期”也应该在“选择”中,还是不在?谢谢,不一定。你总是可以在你喜欢的任何列上排序,而不必将它们包含在select子句中。MINdate是我最终做到这一点的原因——只需按日期排序,而不使用诸如MIN之类的聚合器,就像其他一些答案建议的那样,会给我抛出一个SQL错误:表达式。。。of ORDER BY子句不在GROUP BY子句中,并且包含未聚合的列。。。它在功能上不依赖于GROUP BY中的列clause@wosevision . . . 你可能会考虑接受这个答案。这不是我要接受的问题,但我已经加了我的赞成票。意识是最终让我工作的——简单地按日期排序而不使用像Min那样的某种聚合器,就像一些其他的答案建议给我扔一个SQL错误:表达式…of ORDER BY子句不在GROUP BY子句中,并且包含未聚合的列。。。它在功能上不依赖于GROUP BY中的列clause@wosevision . . . 你可以考虑接受这个答案。这不是我要接受的问题,但我已经加了我的赞成票。