Я пытаюсь обновить каждую строку в таблице данными из случайной строки из другой таблицы. Вот SQL настоящее время я использую:Ошибка при попытке обновления строки со случайным значением
SELECT Data, RowNumber FROM SampleData
SELECT FLOOR(ABS(CHECKSUM(NEWID()))/2147483647.0 * 3 + 1) FROM Name
UPDATE Name SET Surname = (SELECT Data FROM SampleData WHERE RowNumber = FLOOR(ABS(CHECKSUM(NEWID()))/2147483647.0 * 3 + 1))
И здесь результаты я получаю:
Smith 1
Hunt 2
Jones 3
2
2
3
2
1
3
2
.... continues with a random number between 1 and 3 for each row in the Name table
Msg 512, Level 16, State 1, Line 9
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Так что мой вопрос почему ЗЕЬЕСТ производства одного случайного числа для каждой строки где подзапрос UPDATE, похоже, возвращает несколько строк. Я использую SQL Server 2012 SP1, если это имеет значение.
имеет вид на этот запрос ВЫБРАТЬ Нр, Count (*) от ( Select ПОЛА (ABS (СУММА (NEWID()))/+2147483647,0 * 3 + 1), Nr от имени ) в группе пга Имея Count (*)> 1 – bummi
Не совсем уверен, что это значит показать мне. Результат для этого - 3 строки, которые показывают, что 1, 2 и 3 возвращаются примерно через треть каждого из них. Но это именно то, что я ожидал бы –
Вы назначаете набор или результаты в одно поле http://sqlfiddle.com/#!3/d3894/8, которое вы используете, например. 'SELECT TOP 1 Data FROM SampleData .......' – bummi