首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以在不知道现有列名的情况下重命名MySQL列吗?

我可以在不知道现有列名的情况下重命名MySQL列吗?
EN

Stack Overflow用户
提问于 2017-07-18 19:13:19
回答 4查看 954关注 0票数 1

我正在编写一系列MySQL查询来操作表中的数据。我有一个表,它是由我无法控制的系统自动生成的。当我得到它时,这个表有几个列:

ID、名称、日期、标题和包含十进制值的列。

每次表由外部系统自动生成时,它都会用当前日期命名包含十进制值的值。目前,该列被称为"16_Jul_17",因为这是系统运行的最后一天。

我需要一种可靠的方法来查询表(并重命名该列),而不需要知道十进制值列的当前名称。是否有办法执行下列选项之一:

  1. 重命名十进制值列,而不知道列的名称
  2. 我可以使用information_schema来获取名称,但是如何使用它来重命名列
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-07-19 19:52:10

我找到了一个适合我的解决办法。我不知道它在一般情况下有多适用,但对于我的申请来说,它就像一种魅力。

由于我从外部源了解表中列的顺序,所以我只使用UNION,如下所示:

代码语言:javascript
运行
复制
Select 'Id', 'Name', 'Date', 'Title', 0.00 AS 'Value' LIMIT 0
UNION ALL
Select * from original_table

除了显式别名以外,MySQL使用这些值作为列名。请注意,LIMIT 0是必需的,这样就没有虚拟行。

票数 0
EN

Stack Overflow用户

发布于 2017-07-18 19:18:50

可以用ALTER TABLE CHANGE COLUMN语句重命名列,但必须首先知道列的名称。

您必须使用DESCRIBE <tablename>或query INFORMATION_SCHEMA.COLUMNS来获取表中列的名称和数据类型。

一旦获得了列名,就可以为该列的ALTER TABLE语句设置字符串格式。您应该使用应用程序代码来完成这个任务。

票数 2
EN

Stack Overflow用户

发布于 2017-07-18 19:26:21

如果您知道定义了列的位置N,则可以使用查询恢复N列名称:

代码语言:javascript
运行
复制
select COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'TBL_NAME'
AND ORDINAL_POSITION = POSITION_YOUR_COLUMN

之后,可以手动(通过ALTER )或脚本(在shell中生成ALTER、python、.)来具体更改该列。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45175249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档