首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL Server -根据同一表中的数据更新列

SQL Server -根据同一表中的数据更新列
EN

Stack Overflow用户
提问于 2013-09-30 20:13:54
回答 3查看 108.2K关注 0票数 35

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

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

非常感谢您的帮助

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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 
票数 47
EN

Stack Overflow用户

发布于 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 
票数 10
EN

Stack Overflow用户

发布于 2017-06-02 15:16:02

我们可以从self表中更新表,如下所示:

update TABLE_A 
   set TABLE_A.Col1=B.Col2
  from TABLE_A B 
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19094023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档