【发布时间】:2019-05-19 15:42:59
【问题描述】:
声明就像SELECT * FROM db.table group by id desc;
会引发类似的错误
15:02:24 SELECT * FROM db.table group by id desc LIMIT 0, 10 错误代码:1064。您的 SQL 中有错误 句法;检查与您的 MySQL 服务器版本相对应的手册 在第 1 行 0.00014 的 'desc LIMIT 0, 10' 附近使用正确的语法 秒
在 Ubuntu 18.04 Desktop 64bit 上的 MySQL 8.0.13
这在 Windows 或 CentOS 或 Ubuntu 中的 MySQL 5.7 上会很好。
我基本知道,select语句是这样的。
SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
那么这个5.7的问题是不报错吗?
或者在 SQL 标准上更复杂的东西?
【问题讨论】:
-
没有
order by子句,desc没有意义。而且我怀疑这个查询在 5.7 版本中也应该失败 -
该错误表明缺少 order by 子句。 DESC 用于 order by,而不是 group by。
-
这应该被视为一个错误,但我怀疑它会 - 在旧版本的 MySQL 中,group by 子句响应(即允许)ASC/DESC,因此它被用作一种简写方式排序最终结果。见rextester.com/NJDD72740
-
如果您在手册dev.mysql.com/doc/refman/5.7/en/select.html 中查找 select 语句,您将看到高达 5.7 asc|desc 是 group by 语句的可选修饰符,从 8.0 开始不再存在。如果您查看升级文档dev.mysql.com/doc/refman/8.0/en/… 记录了此弃用。
-
@P.Salmon 您能否发表评论作为答案?所以我们可以将问题标记为已解决。
标签: mysql sql mysql-5.7 mysql-8.0