Я искал всюду, но я не могу заставить его работать или понять, почему соединение ведет себя так и сейчас. Я не могу никого спросить, поэтому просто пытаюсь удачи здесь. Так вот вопрос:Обновить столбец таблицы с данными из другой таблицы
tblOldAccess
User Srv Perm LogDtTm
------------------------------------------------
TestNm1 Srv1 Perm1 2016-09-20 00:00:00.000
TestNm1 Srv2 Perm2 2016-05-30 00:00:00.000
TestNm1 Srv1 Perm3 2016-05-30 00:00:00.000
tblNewAccess
User Srv Perm LogDtTm
------------------------------------------------
TestNm1 Srv1 Perm1 2016-11-20 00:00:00.000
TestNm1 Srv2 Perm2 2016-12-30 00:00:00.000
TestNm1 Srv1 Perm4 2017-02-01 21:50:32.197
Если есть же пользователя, СРВ и Пермь между 2 таблиц, я хотел обновить tblOldAccess tabke с текущим LogDtTm от tblNewAccess вот так
Желаемый результат - tblOldAccess
User Srv Perm LogDtTm
------------------------------------------------
TestNm1 Srv1 Perm1 2016-11-20 00:00:00.000
TestNm1 Srv2 Perm2 2016-12-30 00:00:00.000
TestNm1 Srv1 Perm3 2016-05-30 00:00:00.000
Я могу получить строки, которые имеют ту же информацию для пользователя, Srv, Пермь через INTERSECT команду, однако я не в состоянии правильно их подключить, чтобы получить что-то вроде этого:
UPDATE [tblOldAccess]
SET [LogDtTm] = [tmp].[LogDtTm]
FROM tblOldAccessas tmp
JOIN (
SELECT [user], Srv, [Perm] from [tblNewAccess]
INTERSECT
SELECT [user], Srv, [Perm] from [tblOldAccess]
) as drv
ON tmp.[User] = drv.[User]
WHERE tmp.[User] = drv.[User]
AND tmp.[Srv] = drv.[Srv]
Я пробовал несколько условий соединения и даже несколько, где условие только для обновления этих двух строк, которые соответствуют тем, которые нуждаются в обновлении в своем столбце LogDtTm в таблице tblOldAccess. Любой вход был бы оценен.
Я не добавлял никаких первичных ключей или идентификаторов, так как эти столбцы могут иметь одинаковые значения (с разными комбинациями). Поэтому мне нужно было проверить каждую строку. –
Вы заглянули в ['MERGE'] (https://msdn.microsoft.com/en-us/library/bb510625.aspx)? Я считаю, что вы можете получить желаемый результат таким образом. – 3N1GM4