使用另一个不相关的表中的数据更新表

时间:2013-05-16 22:06:16

标签: sql sql-server-2008-r2 sql-update

我正在使用SQL Server 2008 R2,我有以下表格: client(id,country,name)temp(id,country),它们之间是相互关联的。 我想知道如何将temp.id值设置为client.id,并与国家/地区相同。是否有更新句子?我一直在寻找其他网站,我刚刚找到相关表格的解决方案,这不是我的情况。

3 个答案:

答案 0 :(得分:0)

你应该可以做一个简单的insert

insert into client
select id, country, '' from temp

您可能想要设置一个特定的name,因为它不在temp表中(除非它在client表中可以为空)。

Here is a demo

或者,如果id是自动增加的列,请从id中删除select

insert into client
select country, '' from temp

Here is a demo

答案 1 :(得分:0)

当你在SET中思考时,你会在程序上思考。

使用SELECT检索数据 使用WHERE
仅选择来自西班牙的客户 使用列的常量值修改数据作为检索的一部分 使用检索到的数据插入表

INSERT INTO client
SELECT id+10 as id, 'Germany' as country
FROM client
WHERE country = 'Spain'

当然,如果这是一个必须学习SELECT,WHERE,UPDATE等内容的练习,那么你就可以完成程序步骤了。

答案 2 :(得分:0)

也许您想以一种方式同步两个表:

UPDATE t SET t.id=c.id, t.country=c.countryname
FROM client c INNER JOIN temp t ON t.id = c.id

INSERT INTO temp(id,country)
  SELECT c.id, c.countryname
  FROM client c
  WHERE NOT EXISTS(SELECT 1 FROM temp t 
                   WHERE t.id=c.id)

Demo