Как мне обновить с SELECT в SQL Server? - PullRequest
3399 голосов
/ 25 февраля 2010

В SQL Server возможно insert в таблицу с помощью оператора SELECT:

INSERT INTO Table (col1, col2, col3)
SELECT col1, col2, col3 
FROM other_table 
WHERE sql = 'cool'

Возможно ли также обновить через SELECT? У меня есть временная таблица, содержащая значения, и я хотел бы обновить другую таблицу, используя эти значения. Возможно, что-то вроде этого:

UPDATE Table SET col1, col2
SELECT col1, col2 
FROM other_table 
WHERE sql = 'cool'
WHERE Table.id = other_table.id

Ответы [ 33 ]

1 голос
/ 31 августа 2018

Вы можете использовать это для обновления в SQL Server

UPDATE
    T1
SET
   T1.col1 = T2.col1,
   T1.col2 = T2.col2
FROM
   Table1 AS T1
INNER JOIN Table2 AS T2
    ON T1.id = T2.id
WHERE
    T1.col3 = 'cool'
0 голосов
/ 22 ноября 2018

вот так; но вы должны обязательно обновить таблицу и таблицу после, чтобы они были одинаковыми.

UPDATE Table SET col1, col2
FROM table
inner join other_table Table.id = other_table.id
WHERE sql = 'cool'
0 голосов
/ 22 ноября 2018

Одно и то же решение может быть написано немного по-другому, так как я хотел бы установить столбцы только после того, как я написал для обеих таблиц.Работа в MySQL.

UPDATE Table t, 
(SELECT col1, col2 FROM other_table WHERE sql = 'cool' ) o
SET t.col1 = o.col1, t.col2=o.col2
WHERE t.id = o.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...