MySQL语法中OVER和PARTITION的语法错误
我得到了错误语法错误:意外的左括号 MySQL不支持这个吗?我很确定我以前做过这件事,从我在谷歌上看到的情况来看,这应该行得通MySQL语法中OVER和PARTITION的语法错误,mysql,sql,subquery,window-functions,mysql-5.7,Mysql,Sql,Subquery,Window Functions,Mysql 5.7,我得到了错误语法错误:意外的左括号 MySQL不支持这个吗?我很确定我以前做过这件事,从我在谷歌上看到的情况来看,这应该行得通 SELECT Id, Price, CustomerId, ROW_NUMBER() OVER (PARTITION BY CustomerId) FROM Orders; 窗口函数仅在MySQL 8.0中可用 在早期版本中,您可以使用子查询-但是,您的代码缺少ORDERBY子句,这使得排序不一致。假设您希望根据同一客户的id对订单进行排序,您可以将其表述为: mys
SELECT Id, Price, CustomerId, ROW_NUMBER() OVER (PARTITION BY CustomerId)
FROM Orders;
窗口函数仅在MySQL 8.0中可用 在早期版本中,您可以使用子查询-但是,您的代码缺少ORDERBY子句,这使得排序不一致。假设您希望根据同一客户的id对订单进行排序,您可以将其表述为:
mysql -V
mysql Ver 14.14 Distrib 5.7.32, for Linux (x86_64) using EditLine wrapper
我对MySQL没有经验,我看到了14.14版,我认为我的版本高于8.0。显然是另一个号码!Thanks@Lucas当前位置确实:您正在运行5.7.32。select version(选择版本)为您提供了明确的信息;获取服务器版本;您展示的只是命令行客户机版本,它不一定与14.14版有任何关系。这是mysql客户端应用程序的版本,但mysql服务器决定了它所支持的SQL语法。客户端和服务器都有自己的版本号,并且它们不同步。我知道,这确实令人困惑-
SELECT Id, Price, CustomerId,
(SELECT COUNT(*) FROM Orders o1 WHERE o1.CustomerId = o.CustomerId and o1.Id <= o.Id) AS rn
FROM Orders o;