我有一个看起来像这样的表:

SetId      ID       Premium
2012        5          Y
2012        6          Y
2013        5          N
2013        6          N

我想使用setid等于2012的溢值(value)更新2013记录。

因此查询后,它看起来像这样:
SetId      ID       Premium
2012        5          Y
2012        6          Y
2013        5          Y
2013        6          Y

任何帮助,不胜感激

最佳答案

目前尚不清楚您要使用哪个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

关于sql - SQL Server-从同一表中的数据更新列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19094023/

10-13 06:53