mysql - 选择后带有有序数字的新列
问题描述
我有一个名为 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
我知道我可以使用变量创建函数或过程,但也许有我不知道的更简单的方法?
我将不胜感激任何帮助!
解决方案
您可以使用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
推荐阅读
- ios - viewDidLoad() 和 viewDidAppear() 只调用一次?
- javascript - Ajax 在第一次调用时很好地加载库,但在第二次调用时不加载库
- xpath - 如何使用 XPath 查找一组元素中选择组的属性的最小值/最大值?
- linkedin - LinkedIn 共享帖子 URL 与参数
- arrays - 如何在以下 json 数组中获取 f1 的值为 1 - '[1,2,3,{"f1":1,"f2":[5,6]},4]' 使用内置函数
- drag-and-drop - 从一个地方拖放到另一个地方的多个地方
- mysql - 我们如何防止 MySQL 的 SQL 注入?
- actions-on-google - 允许用户在 Google Home 设备上选择任何选项
- azure-devops - 如何将 YAML 中的计划触发器与本地 Azure DevOps 2019 一起使用?
- ios - ios 13 导航控件在 CNContactViewController 中向下滑动选择器以添加个人资料图片时消失?