我需要对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;

我收到此错误消息:



我在做错什么,如何使它起作用?

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

最佳答案

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;

关于mysql - SQL ROW_NUMBER给出错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28129131/

10-11 05:25
查看更多