SQL:根据转换表将 X 的所有值更新为 Y

DrS*_*ker 2 sql sql-server

我有一个 Microsoft SQL 服务器数据库,它导入了一些需要清理的数据;某些字段需要根据第二个表重新映射。例如:

Table: Data
User    Country
Alice   Australia
Bob  Sydney
Carol   London
Dave    London


Table: Translations
From      To
Sydney  Australia
London  United Kingdom
Run Code Online (Sandbox Code Playgroud)

不幸的是,清理源数据不是一种选择,而且这种导入每天都会发生,因此手动更改它是不切实际的。

遍历 Translationstable 的最简单方法是什么,因此对于每一对,它运行的内容实际上是“UPDATE Data SET Country = $TO where Country = $FROM”?如果这可以通过存储过程完成,那将是理想的。我有一种感觉,使用 SQL 有一种非常简单的方法可以做到这一点,但这超出了我的 SQL 技能,我无法通过搜索找到答案(可能是因为它的名称非常简单,我不知道 :-))

G M*_*ros 5

Update Data
Set data.Country = Translations.[To]
From    Data
        Inner Join Translations
          On data.Country = Translations.[from]
Run Code Online (Sandbox Code Playgroud)