我有一个表,看起来像这样:
SetId ID Premium
2012 5 Y
2012 6 Y
2013 5 N
2013 6 N
我想用setid等于2012的溢价值更新2013年的记录。
因此,在查询之后,它将如下所示:
SetId ID Premium
2012 5 Y
2012 6 Y
2013 5 Y
2013 6 Y
非常感谢您的帮助
发布于 2013-09-30 20:18:22
不清楚您想使用哪个2012值来更新哪个2013值,我假设ID
应该是相同的。
使用表变量的完整示例,您可以在management studio中对其进行测试。
DECLARE @Tbl TABLE (
SetId INT,
Id INT,
Premium VARCHAR(1)
)
INSERT INTO @Tbl VALUES (2012, 5, 'Y')
INSERT INTO @Tbl VALUES (2012, 6, 'Y')
INSERT INTO @Tbl VALUES (2013, 5, 'N')
INSERT INTO @Tbl VALUES (2013, 6, 'N')
--Before Update
SELECT * FROM @Tbl
--Something like this is what you need
UPDATE t
SET t.Premium = t2.Premium
FROM @Tbl t
INNER JOIN @Tbl t2 ON t.Id = t2.Id
WHERE t2.SetId = 2012 AND t.SetId = 2013
--After Update
SELECT * FROM @Tbl
发布于 2013-09-30 20:24:48
我认为这是正确的解决方案:
UPDATE t
SET t.Premium = (SELECT TOP 1 t2.Premium
FROM dbo.TableName t2
WHERE t2.SetId = 2012 AND t2.Id = t.ID)
FROM dbo.TableName t
WHERE t.SetId = 2013
发布于 2017-06-02 15:16:02
我们可以从self表中更新表,如下所示:
update TABLE_A
set TABLE_A.Col1=B.Col2
from TABLE_A B
https://stackoverflow.com/questions/19094023
复制相似问题