在SQL SELECT语句中重命名列名

31

我想要重命名 SELECT 表达式结果中的列名。当然,以下方法不起作用:

SELECT * AS foobar_* FROM `foobar`

作为一个SQL新手,我认为我可能错过了一个概念、工具或者关键字,这会帮助我找到答案的方向。希望可以得到指点。谢谢!

更新

我正在寻找一种通用的方法来做到这一点,MySQL特定的技术完全可以使用。

简而言之,我正在编写一个工具,将MySQL查询的结果“导出”到Google Spreadsheets(通过Google Data API)。一些查询是联接操作,因此为使列名唯一,我想将所有列名都加上它们各自的表名前缀。


2
请勿在SQL查询中使用"SELECT*"。这可能会导致检索不必要的列,从而增加数据检索时间的开销。数据库引擎无法利用"Covered Index"的优势,因此查询执行速度较慢。示例代码为:SELECT col1 As Foo, col2 As Bar FROM foobar - Tim Schmelter
1
@TimSchmelter - 我更新了我的问题;实际上我需要检索所有列;但是你的提示已经被注意到了。 - Andrew Cheong
找了一会儿答案。谢谢@TimSchmelter - TheSciGuy
3个回答

48

您可以逐个别名列名称,如下所示:

SELECT col1 as `MyNameForCol1`, col2 as `MyNameForCol2` 
FROM `foobar`

编辑 您可以直接访问INFORMATION_SCHEMA.COLUMNS,以此来创建一个新的别名。不过,如何将其嵌入到查询中则超出了我的MySql技能范围 :(

select CONCAT('Foobar_', COLUMN_NAME)
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME = 'Foobar'

谢谢。点赞支持正义,因为答案与Joe的相同。不过我更新了问题;我需要一种通用的方法来做到这一点... - Andrew Cheong
别名在我看来非常有用。 - Vahid Amiri

11

你需要重新命名每一列。

SELECT col1 as MyCol1,
       col2 as MyCol2,
 .......
 FROM `foobar`

谢谢。我更新了我的问题,因为我需要一种通用的方法来做到这一点。我想最后的办法是在PHP代码中生成列名列表... - Andrew Cheong

2
select column1 as xyz,
      column2 as pqr,
.....

from TableName;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接