Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Mệnh đề OrderBy dẫn đến các tập kết quả khác nhau khi cột đặt hàng có cùng dữ liệu

Đây là "theo thiết kế"

SQL Server (hoặc bất kỳ RDBMS nào) không đảm bảo trả về kết quả theo một thứ tự cụ thể nếu không có ORDER BY mệnh đề đã được chỉ định. Một số người nghĩ rằng các hàng luôn được trả về theo thứ tự chỉ mục nhóm hoặc thứ tự đĩa vật lý nếu không có mệnh đề thứ tự nào được chỉ định. Tuy nhiên, điều đó không chính xác vì có nhiều yếu tố có thể thay đổi thứ tự hàng trong quá trình xử lý truy vấn. Phép nối HASH song song là một ví dụ điển hình cho toán tử thay đổi thứ tự hàng.

Nếu bạn chỉ định một ORDER BY , SQL Server sẽ sắp xếp các hàng và trả lại chúng theo thứ tự được yêu cầu. Tuy nhiên, nếu thứ tự đó không xác định vì bạn có các giá trị trùng lặp, thì trong mỗi "nhóm giá trị", thứ tự là "ngẫu nhiên" vì những lý do tương tự đã đề cập ở trên.

Cách duy nhất để đảm bảo thứ tự xác định là bao gồm cột hoặc nhóm cột duy nhất được đảm bảo (ví dụ:Khóa chính) trong ORDER BY mệnh đề.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tải xuống AdventureWorks2008.msi ở đâu?

  2. SQL Server:Thay thế cho câu lệnh CASE dài

  3. Các tính năng ẩn của SQL Server

  4. Tránh trùng lặp trong truy vấn CHÈN VÀO CHỌN trong SQL Server

  5. Lập trình tạo tập lệnh cho tất cả các đối tượng trong cơ sở dữ liệu