SQL为类似的表创建新列名称
问题描述:
我有一个名为Person的表,其中每列都有字母'Person'作为前缀;即PersonLastName,PersonAddress1,PersonCity等。我希望创建一个与Person具有相同结构但在列名称上具有不同前缀的新表,例如XxxLastName,XxxAddress1,XxxCity。如果我使用SQL为类似的表创建新列名称
Create Table Like Person
我会得到正确的结构,但从Person中获得原始列名称。当然,我可以重新命名所有列,但这是一项乏味的工作。有没有办法像Person一样创建一个表格,并根据某些规则重命名列?
答
我不认为你可以任意做。你可以像下面这样使用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子()砍下前缀。
set @chopped = substring(@colname, ....)
然后将另一个mysql变量设置为新的前缀。
set @newprefix = ''
然后运行一个CREATE TABLE AS查询并对变量(新的前缀+斩波列名称)进行连接。这会很快变得复杂。
我认为从别人的意见很明显,你不应该尝试在mysql中自动执行此操作。最好使用可以轻松运行逻辑的脚本。
+0
用什么语言写脚本? –
请告诉我为什么你需要有一个前缀? –
我认为这个表格足够前缀:'Person.FirstName'与'Person.PersonFirstName'是平等的(如果不是更有意义的话) –
Ed,Rob,我有很多原因使用我自己的前缀。其中之一是我有一个广泛的元数据类型的表,它不被MySql捕获并且我自己维护。我有时需要根据前缀进行查找。另一个是在我调试时在我的代码中轻松定位列名。第三是为了我自己的内在清晰。数据库非常复杂,我不想迷路。 –