语法错误行号数据库

问题描述 投票:3回答:1
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

mysql sql window-functions row-number
1个回答
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变量的默认值不得存在于分区依据字段中。
© www.soinside.com 2019 - 2024. All rights reserved.