mysql 8.0 上的“group by desc”语法错误在 5.7 上很好

Shi*_*ang 6 mysql sql mysql-5.7 mysql-8.0

声明就像 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”附近使用的正确语法

在 MySQL 8.0.13 上 Ubuntu 18.04 桌面 64 位

这在 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];
Run Code Online (Sandbox Code Playgroud)

那么这个 5.7 的问题是不发出错误吗?

或者在 SQL 标准上更复杂的东西?

小智 6

我有同样的问题,所以对于 MySQL 8,我使用了这样的 sql:

SELECT * FROM db.table 
group by id 
order by id desc 
Run Code Online (Sandbox Code Playgroud)


Shi*_*ang 5

摘自@P.Salmon 对这个问题的评论。

如果您在手册http://dev.mysql.com/doc/refman/5.7/en/select.html中查找 select 语句, 您将看到最多 5.7asc|desc是该语句的可选修饰符,group by 这些修饰符从8.0.并且如果您查看升级文档 https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-sql-changes 此弃用已记录在案。

鉴于这种情况,@Linda Li 的回答可能是一个不错的选择。