Как можете да разберете какъв е редът в таблица, като използвате select * from #result
? Няма гаранция за поръчката в select
заявка.
Резултатите обаче са различни при SQL Fiddle. Ако искате да гарантирате, че резултатите са еднакви, добавете първичен ключ. Тогава редът за вмъкване е гарантиран:
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;
Все още ненавиждам да правя select * from Result
след това. Но да, той ги връща в правилния ред както в SQL Server 2008, така и в 2012. Не само това, но тъй като SQL Server гарантира, че първичните ключове са вмъкнати в правилния ред, дори се гарантира, че записите са в правилния ред в този случай.
НО . . . това, че записите са в определен ред на страниците, не означава, че ще бъдат извлечени в този ред без order by
клауза.