试图 return 数据库行号的语法错误

Syntax Error trying to return row number from database

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

我正在尝试 return 每行的行号(名为 coordonnees 的 table 有 3 列:idxy), 但此代码不起作用

错误是:

Syntax error near '(ORDER BY id), x, y, id

在数据库上:MYSQL 5.7.9

显然,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

不过有一些注意事项:

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