Обновите столбец со значением, совпадающим в двух других таблицах
У меня есть 3 базы данных. Один из них содержит неверные данные.
Структура похожа на:
DB_1:
Tbl:
ID - otherID - Guid
DB_2:
Tbl:
ID - otherID - Guid
DB_3:
Tbl:
ID - otherID
DB_1 Содержит "otherID", который должен храниться в DB_3.
"Гид" DB_1 и BD_2
и "otherID" DB_2 и DB_3 совпадают
Как обновить DB_3 "oderID" с DB_1 "otherID"?
Моя первая попытка была:
SELECT A.otherID
FROM [DB_1].dbo.tbl A, [DB_2].dbo.tbl B
WHERE A.Guid = B.Guid;
Но потом у меня возникли проблемы с использованием его для оператора обновления.
так что результат был как:
UPDATE [BD_3].dbo.Tbl
SET [BD_3].dbo.Tbl.otherID =
(
SELECT A.otherID
FROM [DB_1].dbo.tbl A,
[DB_2].dbo.tbl B,
[DB_3].dbo.tbl C
WHERE C.otherID = B.oterID
AND A.guid = B.guid
);
Я нашел что-то, но это не очень помогло мне, потому что я не знаю, как использовать это для этого случая.
1 ответ
Решение
Попробуй это -
UPDATE C
SET otherID = A.otherID
FROM [BD_3].dbo.Tbl C
JOIN [DB_2].dbo.tbl B ON C.otherID = B.oterID
JOIN [DB_1].dbo.tbl A ON A.guid = B.guid
Обновить:
ALTER TRIGGER [dbo].[T_Akquise_ITrig]
ON [dbo].[Akquise]
FOR INSERT
AS BEGIN
SET NOCOUNT ON;
INSERT INTO dbo.LSschalter (Art, ParentId)
SELECT 3, i.LfdNr
FROM INSERTED i
INSERT INTO dbo.LSlisten (Art, ParentId)
SELECT 3, i.LfdNr
FROM INSERTED i
IF
(
SELECT COUNT(1)
FROM INSERTED
)
!=
(
SELECT COUNT(1)
FROM dbo.Adressen a
JOIN INSERTED i ON a.AdrNr = i.AdrNr
) BEGIN
RAISERROR('Some Message', 16, 1)
ROLLBACK TRANSACTION
END
END