我想从 MySQL 表中获取每一行的行号。我已经阅读了这篇文章并尝试了下面建议的选择语句,
SELECT @rownum:=@rownum + 1 as row_number,
t.*
FROM (
select * from myTable
) t,
(SELECT @rownum := 0) r
但是当我运行时遇到如下语法错误
Dbeaver
,
SQL Error [1064] [42000]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'row_number,
t.*
FROM (
select * from myTable
) t,
(SELECT @r' at line 1
有人可以帮忙吗?我是 MySQL 新手。我正在使用版本
8.0
。一旦经过测试,我基本上想在我的 Apache Spark Code
中使用这个选择
使用这个:
SELECT @rownum:=@rownum + 1 as row_num,
t.*
FROM (
select * from myTable
) t,
(SELECT @rownum := 0) r;
row_number
是mysql的保留关键字,不能将其用作别名或用于任何其他目的。
尝试这样的事情。
SELECT *,
ROW_NUMBER() OVER(PARTITION BY 'some column' ) AS row_num
FROM my_table
如果您确实需要使用保留字作为别名,您可以通过在其周围添加标识符引号来实现。
我在将MySQL数据库从5.7版本升级到8.0版本时就遇到过这种情况。将别名更改为其他名称要困难得多,因为它会影响代码库。
在这种情况下只需使用:
SELECT @rownum:=@rownum + 1 as `row_number`,
...