2012-03-26 44 views

回答

31
INSERT INTO table2 (column1, column2, column3) 
SELECT column1, 'no', column3 FROM table2 WHERE column2 = 'yes' 

希望這對你如何做到這一點更清楚一點。正如你所看到的,我從table2中抓取了兩列,而對於另一列,我使用了文本值而不是column2的值。

其他模式,您可以使用:

合併列和其他一些文字(假定列已經是一個字符串數據類型

INSERT INTO table2 (column1, column2) 
SELECT column1 + 'no', column2 FROM table2 WHERE column2 = 'yes' 

合併列和一些文字,其中一個實例,其中列是一個字符串,一個地方是沒有的。

INSERT INTO table2 (column1, column2) 
SELECT column1 + 'no', 'A' + cast(column2 as Varchar (10)) FROM table2 WHERE column2 = 'yes' 
+0

我可以使用通配符嗎? – Agzam 2012-03-26 21:17:50

+2

Ther無法在插入中使用通配符 – HLGEM 2012-03-26 21:18:35

+0

如何做同樣的事情,但只需稍作修改即可。例如:我想插入'column2 val + test'而不是'no'我的意思是從swlwcted行插入值並添加文本。 – 2015-04-30 07:25:55

7
INSERT INTO table(column1,column2) SELECT column1, const2 FROM table ... 

選擇列表可能會混合複製列(按名稱)和更改列(按所需值)。

+1

只是爲了澄清,做你的修改語句的選擇部分的一部分。 – TimothyAWiseman 2012-03-26 21:06:03

+0

究竟如何......? – Agzam 2012-03-26 21:10:08

+0

這取決於你的需求。例如。假設你的主鍵是一個沒有任何鍵分配機制的列名稱id的無意義整數(例如自動增量列);假設你想複製column1的值作爲@source傳遞的ID,並將column2的值設置爲一個作爲@param傳遞的新值。然後執行以下兩個參數:'INSERT INTO t(id,column1,column2)SELECT m.id + 1,source.column1,@param FROM tm,t source WHERE source.id = @source AND m.id = (SELECT MAX(id)FROM t)' – 2012-03-27 16:06:55

1

說柱爲int

INSERT INTO table(column1,column2) SELECT column1 + 1, column2 -1 FROM table 

您可以乘列和執行字符串函數。

相關問題