У меня есть две базы данных на моем сервере: текущая база данных (назовем ее CurrentDB
) и другая база данных, которая была восстановлена из резервной копии CurrentDB
(назовем ее BackupDB
).
В конкретной таблице есть определенный столбец text
, который для некоторых строк мне нужно объединить с данными из более старой версии строки, объединяя их вместе.
Просто чтобы убедиться, что подзапросы, с которыми я столкнулся, работают, я запустил это в Begin
/ Rollback
регионе:
update CurrentDB.dbo.FormFieldData
Set [Text] = (
select ffd.[Text]
from BackupDB.dbo.FormFieldData as ffd
where ffd.FormFieldDataID = FormFieldDataID
)
where FormFieldDataID in (
select ffd.FormFieldDataID
from BackupDB.dbo.FormFieldData as ffd
join BackupDB.dbo.FormFields as ff on ffd.FormFieldID = ff.FormFieldID
join BackupDB.dbo.FormData as fd on ffd.FormDataID = fd.FormDataID
where ff.FormID = 1
and ffd.FormFieldID = 2
and fd.UserID = 3
and Text like '%john smith%'
)
(В обеих версиях FormFieldData
Таблица, FormFieldDataID
является первичным ключом.)
К сожалению, выполнение этого вызывает: Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Я уверен, что есть кое-что простое, что я пропускаю, но я непонять, почему первый подзапрос может когда-либо возвращать более одного значения.
Чего мне не хватает?