Come puoi sapere qual è l'ordine all'interno di una tabella usando select * from #result
? Non vi è alcuna garanzia per l'ordine in un select
interrogazione.
Tuttavia, i risultati sono diversi su SQL Fiddle. Se vuoi garantire che i risultati siano gli stessi, aggiungi una chiave primaria. Quindi l'ordine di inserzione è garantito:
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;
Detesto ancora fare select * from Result
dopodichè. Ma sì, li restituisce nell'ordine corretto sia in SQL Server 2008 che in 2012. Non solo, ma poiché SQL Server garantisce che le chiavi primarie siano inserite nell'ordine corretto, è anche garantito che i record siano nell'ordine corretto in questo caso.
MA . . . solo perché i record sono in un ordine particolare sulle pagine non significa che verranno recuperati in quell'ordine senza order by
clausola.