这种说法就像 SELECT * FROM db.table group by id desc;
会引发如下错误
15:02:24从db.table group按id desc limit 0选择*10错误代码:1064。sql语法有错误;检查与您的mysql服务器版本对应的手册,了解在第10.00014行的“desc limit 0,10”附近使用的正确语法
在ubuntu 18.04桌面版64位的mysql 8.0.13上
在windows、centos或ubuntu的MySQL5.7上,哪一个更好。
我基本上知道,select语句是这样的。
SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
所以这是5.7的问题,不发出错误吗?
或者更复杂的sql标准?
3条答案
按热度按时间slhcrj9b1#
这个查询毫无意义:
您正在执行聚合查询。因此(大概),表中每个行有多个行
id
. 这些被浓缩成一排。其他列应该使用什么值?很遗憾mysql曾经支持这种语法。所以一个可喜的变化是ONLY_FULL_GROUP_BY
现在是默认值。一个小提示是,使用没有聚合函数的聚合查询是可疑的。
也许你想要:
或者更可能的情况是,您需要一个特定的行,例如“最早的”或“最近的”,例如:
kokeuurv2#
我也有同样的问题,所以对于mysql 8,我使用了如下sql:
7xzttuei3#
摘自@p.salmon对问题的评论。
如果在手册中查找select语句http://dev.mysql.com/doc/refman/5.7/en/select.html 你会看到高达5.7
asc|desc
是的可选修饰符group by
语句,如果您查看升级文档https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-sql更改此不赞成意见已记录在案。既然是这种情况,@李琳达的回答可能是个不错的选择。