语法Eror行号数据库

时间:2017-12-27 22:33:12

标签: mysql sql window-functions row-number

SELECT ROW_NUMBER()OVER(ORDER BY id), x, y, id
FROM coordonnees
ORDER BY id

我试图返回每行的行号(名为coordonnees的表格有3列:idxy),但是这段代码不起作用

错误是:

  

'(ORDER BY id),x,y,id

附近的语法错误
数据库上的

:MYSQL 5.7.9

1 个答案:

答案 0 :(得分:1)

显然,MySQL 5.7不支持ROW_NUMBER()。但是,我找到了一种新颖的解决方案,可以在this site模仿它。

SELECT  @row_num := IF(@prev_value=c.id,@row_num+1,1) AS RowNumber
       ,c.x
       ,c.y
       ,c.id
       ,@prev_value := c.id
FROM coordonnees c,
    (SELECT @row_num := 1) x,
    (SELECT @prev_value := -1) y
ORDER BY c.id

但有几点需要注意:

  • 必须在@row_num变量之前设置@prev_value变量。
  • ORDER BY中的第一个字段必须是您要分区的字段。
  • 分配给@prev_value变量的默认值不得存在于分区依据字段中。