批量更新子表记录上设置的子表记录

时间:2011-02-06 12:00:28

标签: sql sql-server select sql-update

我正在使用SQL Server 2008 R2。我从excel导入了2个表,我想将它们链接在一起。我看起来像这样:

从Excel导入的表

brand (nvarchar(20) name)
models (nvarchar(20) parent, nvarchar(50 name))

我的修正后的表格

brand (int ident id, nvarchar(20) name, tinyint status)
models (int ident id, int parent_id,
                  nvarchar(20) parent, nvarchar(50) name, tinyint status)

如您所见,我想使用id。将表格模型使用parent_id链接到表格品牌。

选择没问题,我已经做到了。

我需要的是创建批量更新,将品牌ID放入模型parent_id。

条件是:

set models.parent_id = brand.id where brand.name = model.parent

我希望很清楚。基本上我想将关联字段model.parent更改为model.parent_id。 brand.name有可能发生变化,如果发生这种情况,表模型将无法链接到正确的父模式。

我希望批量执行此操作,浏览品牌中的所有记录并更新模型中的所有相关记录。

2 个答案:

答案 0 :(得分:3)

UPDATE
   m
SET
  parent_id = b.id
FROM
   models m
   JOIN
   brand b ON b.name = m.parent

我认为你想要删除models.parent

 ALTER TABLE models DROP COLUMN parent

答案 1 :(得分:0)

UPDATE models
SET parent_id = brand.id
FROM brand
WHERE brand.name = models.parent