【发布时间】:2012-03-26 21:02:30
【问题描述】:
选择一行、修改几列并将其插入同一个表的最简单方法是什么? 我正在尝试基于另一个插入新行。
【问题讨论】:
标签: sql-server-2008 tsql
选择一行、修改几列并将其插入同一个表的最简单方法是什么? 我正在尝试基于另一个插入新行。
【问题讨论】:
标签: sql-server-2008 tsql
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'
【讨论】:
column2 + 'test'.
SELECT 'no' 和WHERE column2 = 'yes',我们将陷入无限循环。
INSERT INTO table(column1,column2) SELECT column1, const2 FROM table ...
选择列表可能会混合复制的列(按名称)和更改的列(按所需的值)。
【讨论】:
INSERT INTO t(id, column1, column2) SELECT m.id + 1, source.column1, @param FROM t m, t source WHERE source.id = @source AND m.id = (SELECT MAX(id) FROM t)
INSERT INTO t(column1, column2) SELECT source.column1, @param FROM t source WHERE source.id = @source
说列是 int
INSERT INTO table(column1,column2) SELECT column1 + 1, column2 -1 FROM table
您可以将列相乘并执行字符串函数。
【讨论】: