我有一个名为Person的表,其中每列都有字母'Person'作为前缀;即PersonLastName,PersonAddress1,PersonCity等。我希望创建一个新的表,其结构与Person相同,但在列名上有不同的前缀,例如XxxLastName,XxxAddress1,XxxCity。如果我使用
Create Table Like Person
我将获得正确的结构,但是来自Person的原始列名称。当然,我可以重命名所有列,但这是一项繁琐的工作。有没有办法创建像Person这样的表,同时根据某些规则重命名列?
答案 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中自动执行此操作。最好的脚本可以更容易地运行逻辑。