2014-12-04 64 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

相关问题