SQL ROW_NUMBER给出错误

问题描述 投票:0回答:2

我需要在MySQL命令行,并根据该订单号码指定给每一行。 ORDER BY是否按预期运行,但不ROW_NUMBER()

这工作:

USE my_database;
SELECT
    id
    ,volume
    FROM my_table
    ORDER BY volume;

这不起作用:

USE my_database;
SELECT
    id
    ,volume
    ,ROW_NUMBER() over(ORDER BY volume)
    FROM my_table
    ORDER BY volume;

我收到此错误信息:

SELECT ID,卷,ROW_NUMBER()OVER(ORDER BY卷)FROM MY_TABLE ORDER BY量错误代码:1064您的SQL语法错误;检查对应于你的MySQL服务器版本正确的语法在第4行0.000秒附近使用“(ORDER BY卷)FROM MY_TABLE ORDER BY第一卷”手册

我在做什么错了,我如何工作的呢?

我也试过RANK()DENSE_RANK()这给了同样的问题。

mysql sql sql-order-by rank row-number
2个回答
1
投票

有没有这样的事情在MySQL ROW_NUMBER()RANK()。尝试以下方法:

USE my_database;
SET @row_number = 0; 
SELECT id
     , volume
     , @row_number := @row_number + 1 AS rank
FROM my_table
ORDER BY volume;

0
投票

函数ROW_NUMBER()不会在MySQL存在。

但是,您可以复制它,可能是:http://www.mysqltutorial.org/mysql-row_number/

所述ROW_NUMBER是排名函数返回一个行的一个顺序编号,从1开始的第一行。我们经常要使用ROW_NUMBER函数来产生我们所需要的具体报告。不幸的是,MySQL不提供ROW_NUMBER如Microsoft SQL Server和Oracle。然而,在MySQL中,你可以使用会话变量来模拟ROW_NUMBER函数。

例:

SET @row_number = 0;

SELECT 
    (@row_number:=@row_number + 1) AS num, firstName, lastName
FROM
    employees
LIMIT 5;
© www.soinside.com 2019 - 2024. All rights reserved.