如何在查询中使用MySQL ROW_NUMBER函数

时间:2019-04-11 15:41:15

标签: mysql row-number windowing-functions

我正在尝试了解MySQL ROW_NUMBER()函数以及如何使用它为结果集中的每一行生成一个顺序号。

到目前为止我尝试过的事情:

SELECT *, 
ROLL_NUMBER() 
OVER(PARTITION BY examid ORDER BY examid) AS id 
from exam

运行此查询时,显示了一系列错误:

  在分析过程中发现

3个错误。

An alias was previously found. (near "id" at position 68)
An alias was expected. (near " " at position 67)
Unexpected token. (near "id" at position 68)
     

1064-您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的“(LIMIT 0,25的考试编号为ORDER BY的ORDER BY的ID)附近”使用

我该怎么办?

谢谢。

2 个答案:

答案 0 :(得分:0)

将I更改为其他名称,因为select *语句将返回一个ID,并且将与我的ID(AS ID)冲突

答案 1 :(得分:0)

我有同样的问题。这种语法适用于我的情况:

SELECT
    (ROW_NUMBER() OVER (ORDER BY id)) row_number, Field1, Field2
FROM
    myTable
ORDER BY
    id

其他说明:select version()返回10.3.20-MariaDB-log