我正在尝试创建一个存储过程,该过程将在 id = @id 的列 a、b、c、d 中获取一行,并插入一个新行,其中 a、b、c 的值相同,但 d 会不同。
在这种情况下,大约有 50 列,尽管只有一列需要不同。
我正在尝试创建一个存储过程,该过程将在 id = @id 的列 a、b、c、d 中获取一行,并插入一个新行,其中 a、b、c 的值相同,但 d 会不同。
在这种情况下,大约有 50 列,尽管只有一列需要不同。
假设d
是 anINT
并且您想要插入,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
从该列表中删除该列。
可能这有帮助 -
INSERT INTO tablename
(a, b, c, d)
VALUES
(SELECT col1, col2, col3, 'newcolvalue'
FROM tablename
WHERE id = @id);