SELECT ROW_NUMBER()OVER(ORDER BY id), x, y, id
FROM coordonnees
ORDER BY id
我试图返回每行的行号(名为coordonnees
的表格有3列:id
,x
,y
),但是这段代码不起作用
错误是:
数据库上的'(ORDER BY id),x,y,id
附近的语法错误
:MYSQL 5.7.9
答案 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
变量的默认值不得存在于分区依据字段中。