Обновление столбца на основе SELECT с параметром, полученным из UPDATE - PullRequest
2 голосов
/ 04 февраля 2012

Я хочу сделать что-то вроде этого.

UPDATE tbl_states AS ts
SET    tbl_states.country_id = (SELECT tbl_countries.country_id
                                FROM   tbl_states ts1
                                       JOIN tbl_countries
                                         ON tbl_countries.country_id_id =
                                            ts1.country_id
                                WHERE  ts1.country_id_id = ts.country_id_id)  

Я хочу обновить старый country_id, который пришел из другой базы данных, до новый country_idна основе новых первичных ключей, вставленных в новую базу данных.Чтобы дать вам представление, вот схема.

CREATE TABLE [dbo].[tbl_countries](
    [country_id] [int] IDENTITY(1,1) NOT NULL,
    [country_id_id] [int] NULL,
    [country_name] [varchar](50) NULL)

country_id_id - это старый country_id, указанный в следующей таблице, я покажу вам tbl_states

CREATE TABLE [dbo].[tbl_states](
    [state_id] [int] IDENTITY(1,1) NOT NULL,
    [state_name] [varchar](50) NULL,
    [country_id] [int] NULL,
    [state_abbr] [char](3) NOT NULL)

Я хочу обновить country_id столбец этой таблицы tbl_states до основного столбца таблицы выше, используя следующую инструкцию выбора для получения первичного ключа.

SELECT tbl_countries.country_id
FROM   tbl_states_old
       JOIN tbl_countries
         ON tbl_countries.country_id_id = tbl_states_old.country_id  

Извините за заголовокЯ не знаю, как это называется.Не могли бы вы помочь мне с этим?

1 Ответ

3 голосов
/ 04 февраля 2012
UPDATE s
    SET country_id = c.country_id
    FROM tbl_states s
        INNER JOIN tbl_countries c
            ON s.country_id = c.country_id_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...