2011-04-06 38 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)