MySQL 语法中的 OVER 和 PARTITION 语法错误
Wrong syntax for OVER and PARTITION in MySQL syntax
SELECT Id, Price, CustomerId, ROW_NUMBER() OVER (PARTITION BY CustomerId)
FROM Orders;
我收到错误“语法错误:意外的‘(’(左括号)
MySQL不支持这个吗?我很确定我以前做过这个,从我在 google 上看到的情况来看,这应该可行。
mysql -V
mysql Ver 14.14 Distrib 5.7.32, for Linux (x86_64) using EditLine wrapper
Window 函数仅在 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;
SELECT Id, Price, CustomerId, ROW_NUMBER() OVER (PARTITION BY CustomerId)
FROM Orders;
我收到错误“语法错误:意外的‘(’(左括号)
MySQL不支持这个吗?我很确定我以前做过这个,从我在 google 上看到的情况来看,这应该可行。
mysql -V
mysql Ver 14.14 Distrib 5.7.32, for Linux (x86_64) using EditLine wrapper
Window 函数仅在 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;