Оператор =
не работает, когда одна сторона сравнения представляет собой набор записей.Вы могли бы заменить =
на IN
, но то, что вы действительно хотите сделать, это JOIN
ваши две таблицы вместе.Возьмите все условия в вашем предложении WHERE
, которые ссылаются на некоторый столбец из tbl_a, являющийся тем же значением другого столбца в tbl_b, и переместите их в условие JOIN
.
В результате вы должны получить что-то вродеthis:
UPDATE tbl_a a
INNER JOIN tbl_b b ON a.[Key_1] = b.[key_1]
AND a.[Key_2] = b.[key_2]
AND a.[Key_3] = b.[key_3]
AND a.[Key_4] = b.[key_4]
AND a.[Year/Month] = iif(b.[Month] > 9, b.[Year] & "/" & b.[Month], b.[Year] & "/0" & b.[Month])
SET a.[Type] = "UPDATED TEXT"
WHERE a.[Type] = "OLD TEXT"
INNER JOIN
сопоставляет записи из tbl_a с записями в tbl_b, где значения столбцов совпадают.
РЕДАКТИРОВАТЬ: Исправлен синтаксис SQL доступа для комментария Парфе.