2010-09-19 99 views
1

我正在嘗試執行SQL更新,我想根據第二個表中的值設置要更新的列的值。下面的腳本顯示了我正在嘗試做的事情,但到目前爲止,我還沒有找到正確的語法。使用大小寫進行更新並從不同表格中進行選擇

update sometable set name = 
    case 
    when (select newid from lookuptable where oldid = name) <> null then newid 
    else name 
    end 

回答

3
UPDATE T 
SET 
    T.name = L.newid 
FROM sometable T 
INNER JOIN lookuptable L 
    ON L.oldid = T.name 

沒有必要的COALESCE或外連接,因爲你只能在更新匹配的行感興趣。

另外,比較值設置爲空時,你應該總是使用X IS NULLX IS NOT NULL而非X = NULLX <> NULL,因爲平等(和不平等)經營者總是返回null值假。