Обновление строк на основе другой выбранной строки без переменных DECLAREing - PullRequest
4 голосов
/ 18 ноября 2010

Как обновить строки на основе другой отдельной строки.

Я хочу обновить это:

SELECT field_one, field_two, field_three 
  FROM some_table WHERE user_ID = 296

Со значениями в этом SELECT:

  SELECT TOP 1 * field_one, field_two, field_three 
    FROM some_table 
   WHERE user_ID = 500 
ORDER BY ID

В настоящее время я только обновляю field_one, используя:

DECLARE @field_one nvarchar(1000)

SELECT @field_one = field_one
  FROM some_table WHERE user_ID = @copy_user_ID

UPDATE some_table 
   set field_one = @field_one  
 where user_ID = @user_ID

Есть ли способ сделать это с каждым полем, без необходимости ОБЪЯВЛЯТЬ все переменные?

1 Ответ

5 голосов
/ 18 ноября 2010

Давайте посмотрим, в FoxPro вы можете использовать SCATTER и GATHER: -)

Но здесь вы можете сделать это:

UPDATE Table1
SET Field_one = a.Field_one, 
    Field_two = a.Field_two, 
    Field_three = a.Field_three
FROM 
    (SELECT TOP 1 field_one, field_two, field_three 
        FROM some_table WHERE user_ID = 500 
        ORDER BY ID) a
WHERE user_ID = 296

Для дополнительного совета.Вы можете получить список всех полей таблицы, разделенных запятыми, в SSMS, открыв панель Обозреватель объектов с таблицей, а затем щелкните знак плюса (+), чтобы отобразить папки под таблицей.Затем просто щелкните папку Columns и перетащите ее на панель запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...