Строки в таблице не имеют порядка. Они представляют неупорядоченные наборы. Если вы хотите, чтобы строки располагались в случайном порядке, то при извлечении их следует упорядочить:
select name
from testtable
order by newid();
В качестве альтернативы можно добавить столбец identity
, который должен сохранить порядок для group by
:
select identity(int) as id, Name
into TestTable
from Customer order by NEWID();
select *
from TestTable
order by id;
Здесь - это db <> скрипка.
Примечание. На самом деле я удивлен, что ваш пример не работает с небольшим набором данных. Я мог бы догадаться, что это оптимизация, реализованная SQL Server, чтобы избежать сортировки данных, потому что она знает, что таблицы неупорядочены. Однако функция identity()
документирована для сохранения порядка.