我正在尝试创建一个存储过程,该行将使用a,b,c,d列,其中id = @id,并为a,b,c插入一个具有相同值的新行,但d将不同
在这种情况下,大约有50列,但只有一列需要不同。
答案 0 :(得分:5)
假设d
是INT
并且您想插入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之外的所有列......”你需要单独列出它们。如果键入是问题,有一个简单的方法来处理。打开对象资源管理器,展开您的服务器,数据库,表和相关表,然后将列节点拖到查询窗口中:
现在您只需要从该列表中删除d
列。
答案 1 :(得分:1)
可能有帮助 -
INSERT INTO tablename
(a, b, c, d)
VALUES
(SELECT col1, col2, col3, 'newcolvalue'
FROM tablename
WHERE id = @id);