Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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语法中OVER和PARTITION的语法错误_Mysql_Sql_Subquery_Window Functions_Mysql 5.7 - Fatal编程技术网

MySQL语法中OVER和PARTITION的语法错误

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

我得到了错误语法错误:意外的左括号

MySQL不支持这个吗?我很确定我以前做过这件事,从我在谷歌上看到的情况来看,这应该行得通

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;