2011-04-11 41 views
11

Khi tôi thực hiện truy vấn như SELECT col1, col2, col3 FROM table, nó sẽ được sắp xếp theo khóa chính tăng dần.Có "Thứ tự mặc định theo cột" trong SQL Server không?

Tôi chỉ tự hỏi liệu có cách nào để chỉ định một cột khác, chẳng hạn như ORDER BY CreatedDate DESC nếu không có mệnh đề Order By?

tôi nghi ngờ nó (vì nó sẽ rất unintuitive, nhưng chỉ cần tự hỏi anyway.

Trả lời

24

số Bất kỳ trật tự mà bạn nhìn thấy là một artifact của chiến lược tối ưu truy vấn của. lý thuyết Relational cấm rằng có bất kỳ trật tự tiềm ẩn của bất kỳ tập hợp dữ liệu.

bạn thậm chí không thể tin cậy vào cùng một thứ tự thời gian tiếp theo cho cùng một truy vấn vì chiến lược trình tối ưu hóa phụ thuộc vào ngữ cảnh và d ata có thể thay đổi.

+3

Lý thuyết quan hệ, lý thú thực sự xác định rằng 'một tập hợp là một bộ sưu tập không có thứ tự các mục duy nhất, không trùng lặp'. –

12

Ngay cả hành vi mà bạn đang nhìn thấy (theo yêu cầu của vn) không được bảo đảm theo tiêu chuẩn. Bạn nên luôn luôn xác định theo thứ tự bạn muốn điều cần được lấy ra.

+3

Nhưng chỉ khi vấn đề quan trọng có thể không đúng. – dkretz

+0

@le dorfier - đó là chính xác, nếu bạn không quan tâm về thứ tự thì không có lý do gì để sử dụng mệnh đề ORDER BY. –

Các vấn đề liên quan