2009-07-01 42 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