подскажите пожалуйста как создать запрос на обновление для такой проблемы - PullRequest
0 голосов
/ 08 января 2010

У меня есть две таблицы:

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)

Ситуация такая: я хочу обновить countryid в таблице HotelSourceMap из country.countryid. где hotelsourcemap.countrycode = country.countrycode

что-то вроде этого:

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

Ответы [ 2 ]

2 голосов
/ 08 января 2010

Вероятно, для этого существует решение на основе множеств, в этом случае это будет предпочтительнее, и я уверен, что кто-то опубликует его, но до тех пор, по крайней мере, это будет работать:

UPDATE
    HotelSourceMap
SET
    countryid = (SELECT countryId FROM country WHERE country.countryCode = HotelSourceMap.countrycode)
1 голос
/ 08 января 2010

Это действительно сомнительный дизайн таблицы, но вот SQL:

UPDATE    HotelSourceMap
SET       countryid = co.countryId
FROM      HotelSourceMap AS hsm
    JOIN  country        AS co
        ON (hsm.countryCode = co.countryCode)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...