Bagaimana cara mengetahui urutan di dalam tabel dengan menggunakan select * from #result
? Tidak ada jaminan untuk pesanan dalam select
kueri.
Namun, hasilnya berbeda pada SQL Fiddle. Jika Anda ingin menjamin bahwa hasilnya sama, maka tambahkan kunci utama. Maka urutan penyisipan dijamin:
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;
Saya masih benci melakukan select * from Result
sesudah ini. Tapi ya, itu mengembalikannya dalam urutan yang benar di SQL Server 2008 dan 2012. Tidak hanya itu, tetapi karena SQL Server menjamin bahwa kunci utama dimasukkan dalam urutan yang benar, catatan bahkan dijamin dalam urutan yang benar di kasus ini.
TETAPI . . . hanya karena catatan berada dalam urutan tertentu pada halaman tidak berarti mereka akan diambil dalam urutan itu tanpa order by
klausa.