将连续的伪行号分配给 SELECT 返回的结果

Assigning contiguous pseudo row numbers to results returned by SELECT

我们有一个 table 和一个 AUTO_INCREMENT,INT UNSIGNED 索引字段。随着时间的推移,条目已从 table 中删除,在 table 中创建了“漏洞”。过去我们将条目从 table 复制到另一个 table,没有索引字段,删除前者 table 并将后者重命名为前者。

最近我们采用了这个方案:

SET @row_number = 0;
SELECT *, (@row_number:=@row_number + 1) AS pseudo_row_num FROM myTable;

除了我们希望将伪行号显示为第一列外,这工作得很好。

下面给出了一个MySQL语法错误:

SET @row_number = 0;
SELECT (@row_number:=@row_number + 1) AS pseudo_row_num, * FROM myTable;  

MySqls 解析器需要其他东西,因此将 table

命名为
SET @row_number = 0;
SELECT (@row_number:=@row_number + 1) AS pseudo_row_num,mytable.* FROM myTable;