Làm cách nào bạn có thể biết thứ tự bên trong bảng bằng cách sử dụng select * from #result
? Không có gì đảm bảo đối với đơn đặt hàng trong select
truy vấn.
Tuy nhiên, kết quả khác nhau trên SQL Fiddle. Nếu bạn muốn đảm bảo rằng các kết quả là giống nhau, thì hãy thêm khóa chính. Sau đó, thứ tự chèn được đảm bảo:
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;
Tôi vẫn ghét việc select * from Result
sau đây. Nhưng có, nó trả lại chúng theo đúng thứ tự trong cả SQL Server 2008 và 2012. Không chỉ vậy, nhưng vì SQL Server đảm bảo rằng các khóa chính được chèn theo thứ tự thích hợp, các bản ghi thậm chí còn được đảm bảo theo đúng thứ tự trong trường hợp này.
NHƯNG . . . chỉ vì các bản ghi theo một thứ tự cụ thể trên các trang không có nghĩa là chúng sẽ được truy xuất theo thứ tự đó mà không có order by
mệnh đề.