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

Mysql:Thứ tự kết quả với chọn từ khác với thứ tự kết quả với chọn * từ

Đ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 tài liệu .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để sao chép một hàng và chèn vào cùng một bảng với trường autoincrement trong MySQL?

  2. Các biểu tượng cột của bàn làm việc mysql có ý nghĩa gì

  3. Làm cách nào để trích xuất từ ​​thứ n và đếm số lần xuất hiện của từ trong một chuỗi MySQL?

  4. Làm thế nào để khắc phục lỗi này mysql_fetch_assoc () mong đợi tham số 1 là tài nguyên, boolean được đưa vào?

  5. Chọn hàng cuối cùng trong MySQL