Я пытался вставить фиктивные данные в базу данных для целей тестирования и сопоставить отношения Мне нужно обновить все идентификаторы одной таблицы в соответствии со значениями другого.Force sql server, чтобы остановить кэширование подзапроса
Запрос Я пытаюсь выполнить это
update LG set BatchID=(SELECT TOP 1 BatchID FROM Batch
ORDER BY NEWID())
но BatchID от LG заполнена только одна ценность, кажется, его результаты кэширования внутреннего запроса, как заставить его не делать кэширование подзапросов.
подзапрос выполняется только один раз в этом запросе, потому что нет никакой корреляции между обновленную таблицу и подзапрос. Вам понадобится использовать другую конструкцию. –
@DanGuzman Я попытался с внутренним запросом 'SELECT TOP 1 BatchID FROM Batch, где LG.BatchID! = Batch.BatchID ORDER BY NEWID()', но все же все строки обновляются с одинаковым значением. – Shubanker
'обновление LG set BatchID = t2.BatchID FROM LG внутренняя партия присоединения t2 на t2. ?? = LG. ?? ' – artm