Điều này đúng và theo thiết kế: nếu bạn không yêu cầu sắp xếp, máy chủ sẽ không bận tâm đến việc sắp xếp (sắp xếp có thể là một hoạt động tốn kém) và nó sẽ trả về các hàng theo bất kỳ thứ tự nào mà nó thấy phù hợp. Nếu không có thứ tự được yêu cầu, cách sắp xếp các bản ghi thậm chí có thể khác nhau giữa các truy vấn này với truy vấn tiếp theo (mặc dù điều đó không quá có thể xảy ra).
Thứ tự chắc chắn không phải là ngẫu nhiên - đó chỉ là bất kỳ cách nào mà các hàng thoát ra khỏi truy vấn và như bạn thấy, ngay cả những sửa đổi nhỏ cũng có thể thay đổi thứ tự này một cách đáng kể. Thứ tự "không xác định" này phụ thuộc vào việc triển khai, không thể đoán trước và không nên dựa vào.
Nếu bạn muốn các phần tử được sắp xếp theo thứ tự, hãy sử dụng ORDER BY
mệnh đề (đó là mục đích của nó) - ví dụ:
SELECT name FROM difficulties ORDER BY name ASC;
Điều đó sẽ luôn trả về kết quả được sắp xếp theo tên, theo thứ tự tăng dần. Hoặc, nếu bạn muốn chúng được sắp xếp theo khóa chính, cuối cùng ở trên cùng, hãy sử dụng:
SELECT name FROM difficulties ORDER BY id DESC;
Bạn thậm chí có thể sắp xếp theo chức năng - nếu bạn thực sự muốn thứ tự ngẫu nhiên, hãy làm điều này (cảnh báo:hiệu suất khủng khiếp với các bảng lớn):
SELECT name FROM difficulties ORDER BY RAND();
Để biết thêm chi tiết, hãy xem hướng dẫn này và tài liệu .