2014-02-27 48 views
1

我有兩個相同的表A和B.在相同意義上它們具有相同類型的具有相同名稱和數據類型的列。將行插入表中,只留下一列,並使用列名刪除

A有100列,B有101列。

它們之間的唯一區別是B有一個額外的列。

現在我試着插入從A到B的列。

如果兩個表的列數相同,我可以使用下面的插入語句。

insert into B 
select * from A; 

由於具有不同的數字,我必須寫在INSERT語句中的所有列名稱的列的兩個表。現在

insert into B (col1,........col100) 
select col1....col100 from A; 

我的問題是..有什麼辦法,我們可以寫本聲明更簡單的方法像下面這樣的代碼時,沒有線可以保存。

insert into B (exclude column 101) 
    select * from A; 
+0

您能夠創建表A的視圖,使其僅包括那些「喜歡」表B.然後你就可以在視圖中選擇A到B表中的列? –

+0

是的。如果插入是一個常規活動,那麼我必須去看看。但是,創建異議不應只爲插入而增加。 – Mallik

回答

2

提供B的最後一列是從一列不同的列中,並且a和b列是相同的順序,和b的最後一列可以爲空:

INSERT INTO b SELECT *,NULL FROM a; 

如果沒有,請輸入任何有效值而不是NULL。

+0

嗨謝謝...這解決了我的問題。如果訂單不同,我們可以插入什麼方法? – Mallik

+0

如果順序不一樣,恐怕你必須按照你想要的順序手動編寫所有字段,從而執行排列......例如,如果排列了一列:'col1 col2 col3'和b列的安排:'col1 col3 col2 col4',那麼你應該這樣做:'插入到B選擇col1,col3,col2,null從一個' –

+0

好答案.... –

1

由於這是標記的SQL服務器,我猜你使用SSMS來編寫查詢..正確設置你的選擇......見下圖。

ssms option screen

然後切換到文本輸出模式(CTRL-T)

SELECT * FROM TABLENAME WHERE 1=2 

複製並粘貼到這裏的CSV列列表...和混合列的順序匹配你認爲必要。

column list as csv

相關問題