Como você pode saber qual é o pedido dentro de uma tabela usando
select * from #result
? Não há garantia quanto ao pedido em um select
consulta. No entanto, os resultados são diferentes no SQL Fiddle. Se você quiser garantir que os resultados sejam os mesmos, adicione uma chave primária. Então o pedido de inserção é garantido:
CREATE TABLE MyTable(Name VARCHAR(50), SortOrder INT)
INSERT INTO MyTable SELECT 'b', 2 UNION ALL SELECT 'c', 3 UNION ALL SELECT 'a', 1 UNION ALL SELECT 'e', 5 UNION ALL SELECT 'd', 4
select top 0 * into result from MyTable;
alter table Result add id int identity(1, 1) primary key;
insert into Result(name, sortorder)
SELECT * FROM MyTable
ORDER BY SortOrder;
Eu ainda detesto fazer
select * from Result
depois disto. Mas sim, ele os retorna na ordem correta no SQL Server 2008 e 2012. Não apenas isso, mas como o SQL Server garante que as chaves primárias sejam inseridas na ordem correta, os registros são garantidos até mesmo na ordem correta em este caso. MAS . . . só porque os registros estão em uma ordem específica nas páginas não significa que eles serão recuperados nessa ordem sem
order by
cláusula.