¿Cómo puede saber cuál es el orden dentro de una tabla usando select * from #result
? No hay garantía en cuanto al orden en un select
consulta.
Sin embargo, los resultados son diferentes en SQL Fiddle. Si desea garantizar que los resultados sean los mismos, agregue una clave principal. Entonces el orden de inserción está garantizado:
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;
Todavía detesto hacer select * from Result
después de este. Pero sí, las devuelve en el orden correcto tanto en SQL Server 2008 como en 2012. No solo eso, sino que como SQL Server garantiza que las claves primarias se inserten en el orden correcto, incluso se garantiza que los registros estén en el orden correcto en este caso.
PERO . . . el hecho de que los registros estén en un orden particular en las páginas no significa que se recuperarán en ese orden sin order by
cláusula.