使用除另一行之外的其他行的值插入行?

时间:2012-05-21 17:36:24

标签: sql sql-server-2008 sql-server-2008-r2

我正在尝试创建一个存储过程,该行将使用a,b,c,d列,其中id = @id,并为a,b,c插入一个具有相同值的新行,但d将不同

在这种情况下,大约有50列,但只有一列需要不同。

2 个答案:

答案 0 :(得分:5)

假设dINT并且您想插入15而不是dbo.oldtable中的任何内容,那么:

INSERT dbo.newtable(a,b,c,d) 
  SELECT a,b,c,d = 15
  FROM dbo.oldtable
  WHERE id = @id;

更有可能来自变量,所以:

INSERT dbo.newtable(a,b,c,d) 
  SELECT a,b,c,d = @whatever
  FROM dbo.oldtable
  WHERE id = @id;

很抱歉,但没有简写说“除了d之外的所有列......”你需要单独列出它们。如果键入是问题,有一个简单的方法来处理。打开对象资源管理器,展开您的服务器,数据库,表和相关表,然后将列节点拖到查询窗口中:

enter image description here

现在您只需要从该列表中删除d列。

答案 1 :(得分:1)

可能有帮助 -

INSERT INTO tablename
(a, b, c, d)
VALUES
(SELECT col1, col2, col3, 'newcolvalue'
 FROM tablename
 WHERE id = @id);