如何根据select语句的结果更新给定行的列?



对不起,问题标题没有很好地解释我的问题:

假设我有一张桌子,Dog:

<表类> ID 名称 品种 tbody><<tr>1狗杂种狗2姑娘牧羊犬.….999点Dalmation

我假设品种表中的达尔马提亚名字应该是ID 999而不是3?

我想你想要这样的东西:

UPDATE Dog, Breed 
SET [Dog].[BreedID] = [Breed].[Name]
WHERE (([Dog].[ID]=[Breed].[ID]));

输出的Dog表如下所示:

ID  Name    BreedID
1   Fido    Mutt
2   Lassie  Lassie
999 Spot    Dalmatian

更新dogs表以引用新的品种表实际上是一个相对简单的查询:(参见演示)

-- update dogs with breed_id 
update dogs d 
set breed_id = b.breed_id 
from breeds b 
where b.name = d.breed;

除此之外,你的行动应该遵循:

  • 使新品种所需和FK进入品种表
  • 从狗中删除不必要的品种栏

最新更新