在MySQL中选择行号

问题描述 投票:0回答:3

我想从 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

中使用这个选择
mysql sql
3个回答
2
投票

使用这个:

SELECT @rownum:=@rownum + 1 as row_num, 
       t.*
FROM ( 
   select * from myTable
) t,
(SELECT @rownum := 0) r;

row_number
是mysql的保留关键字,不能将其用作别名或用于任何其他目的。


0
投票

尝试这样的事情。

 SELECT *,   
        ROW_NUMBER() OVER(PARTITION BY 'some column' ) AS row_num  
    FROM my_table

https://www.javatpoint.com/mysql-row_number-function


0
投票

如果您确实需要使用保留字作为别名,您可以通过在其周围添加标识符引号来实现。

我在将MySQL数据库从5.7版本升级到8.0版本时就遇到过这种情况。将别名更改为其他名称要困难得多,因为它会影响代码库。

在这种情况下只需使用:

SELECT @rownum:=@rownum + 1 as `row_number`, 
...
© www.soinside.com 2019 - 2024. All rights reserved.