2011-04-06 39 views
1

是否有SQL查询将表A中的列名插入表B中的行?SQL将列名插入数据

+0

你使用了哪些数据库? – 2011-04-06 13:56:18

+0

哪种风味或RDBMS? – 2011-04-06 13:56:27

+0

SQL的什么实现? Microsoft SQL Server?甲骨文? MySQL的? – JNK 2011-04-06 13:56:34

回答

2
INSERT INTO B  
    SELECT COLUMN_NAME 
    FROM INFORMATION_SCHEMA.Columns 
    WHERE TABLE_NAME = 'A' 

应该工作...

6

由于列名字本质上是字符串,可以,您可以将它们插入其他表格中。

问题的难度较大(也是隐含的)部分是“如何获取给定表的列表”,并且该问题的答案取决于您正在使用的数据库。

另外,根据我的经验,将数据库元数据存储到数据库中可以指示设计问题。

+1

用于将数据库元数据存储到数据库中,可以指示设计问题。# – JNK 2011-04-06 14:00:48

+0

设计评论+1。我不知道这里的项目,但我想不出有什么理由需要将列名保存在另一张桌子上,而这些桌面名称无法通过更好的数据库设计来更好地执行。 – 2011-04-06 14:02:17

+2

@Jimmy,有一些理智的场景(我用它来定制数据库复制),但其中大多数是[Inner platform effect]的一个版本(http://en.wikipedia.org/wiki/Inner- platform_effect) – SWeko 2011-04-06 14:07:21

2

(使用INFORMATION_SCHEMA在最大的可移植性的尝试)

INSERT INTO B 
SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME='A' AND TABLE_SCHEMA='FOO' 
1

可能会根据您的实际软件有所不同,但为MySQL这应该工作:

INSERT INTO table_b (col_name) 
    SELECT Field FROM (DESCRIBE table_a)