2012-05-12 83 views
11

在SQL中,Select into ...將行復制到不同的(備份)表中。如果備份表具有不同的結構(或不同的列名),這可能嗎?如果不是,那麼實現這一目標的最好方法是什麼?選擇到具有不同列名的表中

這是我想要做的:TableA有列a1,a2,a3。我想從這個表中複製一些行到另一個表TableB,它有列b1,b2,b3,b4。的a1內容進入b1a2b2

+0

SQL有哪些味道?唯一可以用SELECT..INTO找到的是MS-SQL,它的文檔意味着它將創建一個新表 - 它應該總是具有「正確的」結構。 – millimoose

+0

謝謝你的觀點。我正在研究sqlite。我不確定是否「Select into ...」在sqlite中有效。我剛剛嘗試過,它不在sqlite中工作。然而,「插入..」適用於此。 – zolio

回答

33

列名沒有在所有問題,只要在數據類型比賽。

如果列的數據類型不匹配,請嘗試相應地轉換值。 只需嘗試與小的虛擬桌子。務必明確列出目標列以避免混淆。像這樣:

INSERT INTO TableB (b1, b2, b3) 
SELECT a1, a2, a3 
FROM TableA 
WHERE <some condition>; 

SQLite手冊中的更多細節here

+0

着我們這樣做沒有指定這樣的列名... INSERT INTO payment_reject_reasons SELECT * FROM 'de_list_reasons' 這給了我一個錯誤... – mahen3d

+1

@ user1179459:你可以* *做到這一點,如果行類型比賽。如果你得到一個錯誤,他們顯然不會。此外,這種形式僅適用於臨時命令和特殊情況。通常情況下,你應該拼出所涉及的列,所以如果你添加一列到其中一個表,命令不會中斷。我添加了一個指向手冊的鏈接。 –

相關問題