SQL为类似的表

时间:2016-02-19 18:52:50

标签: mysql create-table

我有一个名为Person的表,其中每列都有字母'Person'作为前缀;即PersonLastName,PersonAddress1,PersonCity等。我希望创建一个新的表,其结构与Person相同,但在列名上有不同的前缀,例如XxxLastName,XxxAddress1,XxxCity。如果我使用

Create Table Like Person

我将获得正确的结构,但是来自Person的原始列名称。当然,我可以重命名所有列,但这是一项繁琐的工作。有没有办法创建像Person这样的表,同时根据某些规则重命名列?

1 个答案:

答案 0 :(得分:0)

我认为你不能随意做到这一点。您可以在以下1个语句中执行此操作,但我不知道这对您是否更好,而不仅仅是在简单的CREATE TABLE LIKE查询之后进行更改。

You could do:
CREATE TABLE Dog AS
  (SELECT PersonFirstName AS DogFirstName, PersonLastName AS DogLastName FROM Person);

另一种方式(显然)是用SQL之外的另一种语言编写脚本。

您可以做的另一件事是将现有列名称从表中删除

SELECT @colname := `COLUMN_NAME`  FROM `INFORMATION_SCHEMA`.`COLUMNS`  WHERE `TABLE_SCHEMA`='YOURDATABASE' AND `TABLE_NAME`='YOURTABLE' limit 0, 1;

然后使用mysql substring()删除前缀。

set @chopped = substring(@colname, ....)

然后将另一个mysql变量设置为新前缀。

set @newprefix = ''

然后运行CREATE TABLE AS查询并连接变量(新前缀+切断列名称)。这将很快变得复杂。

我认为其他评论很明显,你不应该尝试在mysql中自动执行此操作。最好的脚本可以更容易地运行逻辑。