Обновите столбец таблицы с помощью столбца другой таблицы в SQL Server - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь обновить столбец из одной таблицы в другую таблицу другой базы данных.

Я искал в стеке, но нашел ответы для PostgreSQL и SQLite. Этот код не работает для меня должным образом в SQL Server.

Скажи,

  • D1, D2 - две разные базы данных
  • T1 - таблица
  • C1, C2, C3 - столбцы в T1

Я хочу обновить как

UPDATE T1 
SET D2.T1.C1 = D1.T1.C1
WHERE D2.T1.C2 = D1.T1.C2

Все, кроме предложения where, работает нормально.

Вот код, который я пробовал:

use DB2
GO

UPDATE TABLE1 
SET COL1 = (SELECT COL1 FROM DB1.dbo.TABLE1) 
WHERE COL2 = DB1.dbo.TABLE1.COL2

Как мне написать этот запрос?

Примечание: D1 и D2 идентичны. Оба имеют одинаковую схему. Просто имя и данные разные. Обе базы данных находятся на одном сервере.

Ответы [ 3 ]

2 голосов
/ 23 марта 2019

SQL Server поддерживает синтаксис объединения обновлений:

UPDATE t1
SET COL1 = t2.COL1
FROM TABLE1 D1.t1
INNER JOIN TABLE2 D2.t2
    ON t1.COL2 = t2.COL2;

На самом деле, ваш текущий подход может работать, но вы должны попробовать изменить его на:

UPDATE TABLE1 D1.t1
SET COL1 = (SELECT t2.COL1 FROM TABLE2 D2.t2 WHERE T1.COL2 = T2.COL2);
0 голосов
/ 23 марта 2019

Или update tableName set column Name = (select columnName from second table where 1=1) i.e condition is either true or false optional though

0 голосов
/ 23 марта 2019

Вы можете просто использовать INNER JOIN причину , поддерживающую запросы к нескольким базам данных, так что вы можете сделать так:

UPDATE T1
SET T1.Col1 = T2.Col1
FROM DataBase1.Schema.TableName T1 INNER JOIN DataBase2.Schema.TableName T2
ON T1.ID = T2.ID;

Пожалуйста, посетите и прочитайте Cross-Database Queries.

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