未知原列名时如何重命名SELECT语句返回的结果列名
SQL按列序号重命名未知列名的查询结果
需求说明
手上持有多份他人编写的SQL查询语句,仅知晓这些SQL执行后返回的列数,不清楚列的原始名称,需要按列的顺序自定义重命名查询结果的列名。
举个示例,现有查询语句:
select * from some_table
已知该语句执行后返回2列,但不知道具体列名,期望实现的效果是把第一列重命名为Column1,第二列重命名为Column2,类似如下伪代码的效果:
select [1] as 'Column1', [2] as 'Column2' from some_table
可行实现方案
可通过UNION ALL实现该需求,示例代码如下:
select 'c1' as 'Column1', 'c2' as 'Column2' limit 0 union all select * from some_table
方案说明
limit 0的作用是移除第一条查询返回的['c1', 'c2']占位行,不会在最终结果中输出这行数据UNION ALL会继承第一条查询的列名,最终输出的结果会直接使用第一条语句定义的列名,示例最终结果结构如下:| Column1 | Column2 | ---------------------- | xxxx | yyyyy |
目前该方案测试运行正常,后续会继续验证不同场景下的兼容性。
内容的提问来源于stack exchange,提问作者ilu
相关产品推荐
相关产品推荐

