首页 > 解决方案 > 选择后带有有序数字的新列

问题描述

我有一个名为 Person 的表,例如:

Name | Surname | Age
--------------------
Foo  | Bar     | 23
Faz  | Caz     | 17
Cas  | Zas     | 26

在使用选择查询时是否有任何“简单”的方法(函数或其他东西)来创建新的自动增量列?但只是为了结果,数据库没有真正的变化。例如,如果我使用:

SELECT 'test' as new_col, Name, Surname, Age FROM Person;

我会得到新列的结果new_col。我想用每列加1个数字来交换这个'test':1、2、3等。

预期结果:

new_col | Name | Surname | Age
------------------------------
   1    | Foo  | Bar     | 23
   2    | Faz  | Caz     | 17
   3    | Cas  | Zas     | 26

我知道我可以使用变量创建函数或过程,但也许有我不知道的更简单的方法?

我将不胜感激任何帮助!

标签: mysqlsql

解决方案


您可以使用row_number()

SELECT ROW_NUMBER() OVER (ORDER BY NULL) as new_col, 'test' as new_col, Name, Surname, Age
FROM Person;

或者在旧版本的 MySQL 中:

SELECT (@rn := @rn + 1) as new_col, 'test' as new_col, p.Name, p.Surname, p.Age
FROM Person p CROSS JOIN
     (SELECT @rn := 0) params

推荐阅读