2014-12-04 68 views
0

我需要根據列「TravelAgencyTypeCode」的值更新「dbo.ReservationStay」中名爲「TravelAgencyID2」的列中的值。 「dbo.TravelAgency」。編寫SQL CASE語句以基於另一個表中另一列的值更新列

更新的條件如下:如果dbo.TravelAgency中的TravelAgencyTypeCode不等於'DMC',則TravelAgencyID2 = TravelAgencyID(來自dbo.ReservationStay),ELSE TravelAgencyID2保持不變。

+3

你有什麼嘗試? – 2014-12-04 11:36:36

+2

你幾乎在你的描述中寫了這個查詢。你可以發佈你的努力嗎? – 2014-12-04 11:37:06

+0

當條件依賴於另一個表中的列時,我被卡住了!當兩列在同一個表中時,我可以編寫CASE語句,但我無法弄清楚如何去做。 – user3115933 2014-12-04 11:38:28

回答

1

SO,你只需要更新那些行哪裏有條件滿足?

UPDATE rs 
SET rs.TravelAgencyID2 = rs.TravelAgencyID 
FROM ReservationStay rs 
    INNER JOIN TravelAgency ta on rs.TravelAgencyID2 = ta.ID 
WHERE ta.TravelAgencyTypeCode != 'DMC' 

這隻會更新您需要的行,而不會觸及其他任何東西。

+0

謝謝!由於我認爲JOIN不能在UPDATE中使用,所以無法解決這個問題。 – user3115933 2014-12-04 11:41:56

+0

是的,當學習SQL時,這是一個常見的混亂原因,所以你並不孤單:)我不確定UPDATE ..FROM語法的哪些部分是標準的,哪些是特定的SQL Server,但它會得到完成的工作... – SWeko 2014-12-04 11:42:49

相關問題