Đâ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 đề.