Jak můžete zjistit, jaké je pořadí v tabulce pomocí select * from #result
? Neexistuje žádná záruka ohledně objednávky v select
dotaz.
Výsledky se však na SQL Fiddle liší. Pokud chcete zaručit, že výsledky budou stejné, přidejte primární klíč. Pak je objednávka vložení zaručena:
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;
Stále se mi hnusí select * from Result
po tomto. Ale ano, vrací je ve správném pořadí v SQL Server 2008 i 2012. Nejen to, ale protože SQL Server zaručuje, že primární klíče jsou vloženy ve správném pořadí, je dokonce zaručeno, že záznamy budou ve správném pořadí. tento případ.
ALE . . . to, že jsou záznamy na stránkách v určitém pořadí, neznamená, že budou načteny v tomto pořadí bez order by
doložka.