mysql - MySQL 语法中 OVER 和 PARTITION 的语法错误
问题描述
SELECT Id, Price, CustomerId, ROW_NUMBER() OVER (PARTITION BY CustomerId)
FROM Orders;
我收到错误“语法错误:意外的'('(左括号)
MySQL不支持这个吗?我很确定我以前做过这个,从我在谷歌上看到的应该可以。
mysql -V
mysql Ver 14.14 Distrib 5.7.32, for Linux (x86_64) using EditLine wrapper
解决方案
窗口函数仅在 MySQL 8.0 中可用。
在早期版本中,您可以使用子查询 - 但是,您的代码缺少一个ORDER BY
子句,这使得排序不一致。假设您想按 id 对同一客户的订单进行排序,您可以将其表述为:
SELECT Id, Price, CustomerId,
(SELECT COUNT(*) FROM Orders o1 WHERE o1.CustomerId = o.CustomerId and o1.Id <= o.Id) AS rn
FROM Orders o;
推荐阅读
- python-3.x - Twitter Api 的时间延迟问题
- python - 将python字典列表转换为熊猫中的数据框
- ssis - 如何根据生成的代码编译 BIMLScript
- r - R中的数据帧格式转换:如何将日期转换为年份(每年每个ID新行)
- c - 每次调试时变量的地址是否会改变
- javascript - 在发送到服务器之前打开文件以在浏览器中查看/操作数据
- r - 替换所有字符串大于 X 的观测值
- ios - 在 IOS 项目中使用 Xamarin.Auth 登录不起作用
- python - osmnx get_nearest_edges 函数结果不清楚哪个键
- flutter - 当我向服务器发布请求时发生 HttpException,如下所示