2010-01-08 26 views
0

創建更新查詢我有兩個表:請告訴我如何爲這樣一個問題

1. 
CREATE TABLE [dbo].[HotelSourceMap](
[hotelsourcemapid] [bigint] IDENTITY(1,1) NOT NULL, 
[dspartnerid] [bigint] NOT NULL, 
[dshotelid] [bigint] NOT NULL, 
[countrycode] [varchar](5) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, 
[countryid] [bigint] NULL) 

2. 
CREATE TABLE [dbo].[country](
[countryId] [smallint] IDENTITY(1,1) NOT NULL, 
[countryName] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, 
[countryCode] [varchar](2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL) 

的情況是這樣的: 我想從country.countryid更新HotelSourceMap表countryid。 其中hotelsourcemap.countrycode = country.countrycode

一些事情是這樣的:

UPDATE HotelSourceMap 
SET 
HotelSourceMap.countryid =country.countryId 
WHERE 
HotelSourceMap.countrycode = country.countryCode 

回答

2

有可能就是這個基於集合的解決方案,在這種情況下,這將是最好的,我敢肯定有人會它張貼,但在那之前,至少這將做的工作:

UPDATE 
    HotelSourceMap 
SET 
    countryid = (SELECT countryId FROM country WHERE country.countryCode = HotelSourceMap.countrycode) 
+0

哇..非常好的查詢.. – 2010-01-08 07:52:45

1

這實在是值得商榷表的設計,但這裏是SQL:

UPDATE HotelSourceMap 
SET  countryid = co.countryId 
FROM  HotelSourceMap AS hsm 
    JOIN country  AS co 
     ON (hsm.countryCode = co.countryCode) 
+0

感謝您的解決方案..其工作正常。請告訴我在這個查詢問題... UPDATE HotelSourceMap SET hsm.hotelid = co.hotelid FROM HotelSourceMap AS HSM JOIN酒店作爲共同 ON(hsm.hotelname = CO。[名]和HSM。 cityid = co.cityid) 其給我錯誤: 不能綁定多部分標識符「hsm.hotelid」。 – 2010-01-08 09:39:45

+0

嘗試刪除「hsm」。在SET關鍵字之後。一次只能更新一個表(在UPDATE 之後指定),所以不需要在SET子句中使用表別名'hsm'。另外,如果你需要加入一個不同的表格,例如從「co」改變別名。 '酒店AS豪' – Ryan 2010-01-08 14:07:36

相關問題