2009-07-01 38 views
1

我有一个Microsoft SQL服务器数据库,用于导入某些需要一点清理的数据;有些字段需要根据第二个表重新映射。例如:SQL:根据转换表将X的所有值更新为Y

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


Table: Translations 
From  To 
Sydney Australia 
London United Kingdom 

不幸的是清理源数据是不是一种选择,而这种进口情况的日常人工手动更改它是不实际的。

什么是通过Translationstable迭代最简单的方法,所以对于每一对一个运行的东西是efectively“更新数据中设置的国家= $到国家= $ FROM”?如果这可以通过一个理想的存储过程来完成。我有一种感觉,用SQL做这件事很简单,但它超出了我的SQL技能,并且我无法通过搜索找到答案(可能是因为它有一个非常小的名字,我不知道:-))

回答

4
Update Data 
Set data.Country = Translations.[To] 
From Data 
     Inner Join Translations 
      On data.Country = Translations.[from] 
2

还没有尝试过它,但这可能工作?

更新数据d SET国家=(选择从翻译从哪儿= D.Country)

+0

这应该是正确的,但“要”保留字? – chakrit 2009-07-02 00:03:13

+0

不幸的是,增加了一个子查询,根据一般原则,最好避免给出选择。 – dkretz 2009-07-02 00:29:18