首页 文章

SQL ROW_NUMBER给出了错误

提问于
浏览
0

我需要在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,volume,ROW_NUMBER()over(ORDER BY volume)FROM my_table ORDER BY volume错误代码:1064 . 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第4行0.000秒附近使用'(ORDER BY volume)FROM my_table ORDER BY vol'附近使用正确的语法

我做错了什么,如何让它发挥作用?

我也尝试了 RANK()DENSE_RANK() ,这给出了同样的问题 .

2 回答

  • 0

    MySQL中不存在函数ROW_NUMBER() .

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

    row_number是一个排名函数,它返回一行的序号,从第一行的1开始 . 我们经常想使用row_number函数来生成我们需要的特定报告 . 不幸的是,MySQL不提供像Microsoft SQL Server和Oracle这样的row_number . 但是,在MySQL中,您可以使用会话变量来模拟row_number函数 .

    example:

    SET @row_number = 0;
    
    SELECT 
        (@row_number:=@row_number + 1) AS num, firstName, lastName
    FROM
        employees
    LIMIT 5;
    
  • 0

    在MySQL中没有 ROW_NUMBER()RANK() 之类的东西 . 请尝试以下方法:

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

相关问题