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

gạch nối theo thứ tự MySQL theo mệnh đề

Câu trả lời có trong câu hỏi:

Từ khóa ở đây là "biểu thức" . Bạn có thể sử dụng các biểu thức trong ORDER BY mệnh đề.

ORDER BY -order_line_groups.sequence DESC

là một biểu thức số học và "dấu gạch ngang" không phải là dấu gạch nối mà là dấu trừ; toán tử toán học một ngôi trừ đi.

Nó hoạt động như thế nào?

Về kết quả, nó hoạt động như mong đợi:

  • Nếu loại cột order_line_groups.sequence kiểu số hoặc loại ngày và giờ (chúng cũng được lưu trữ bên trong dưới dạng số) sau đó dấu trừ đảo ngược thứ tự của các hàng được trả về. Mệnh đề tương đương với

      ORDER BY order_line_groups.sequence ASC
    
  • Nếu loại cột là loại chuỗi thì MySQL cố gắng chuyển đổi các giá trị của cột thành số (vì phép trừ là một phép toán số học và nó không được xác định cho chuỗi). Khi MySQL chuyển đổi chuỗi thành số, nó dừng ở ký tự đầu tiên không phải là chữ số. Tùy thuộc vào dữ liệu bạn lưu trữ trong cột order_line_groups.sequence , nhiều hoặc ít giá trị chuỗi của nó sẽ chuyển đổi thành số 0 .

Về tốc độ, như đã giải thích trong trang tài liệu được cung cấp trong câu hỏi MySQL không thể sử dụng chỉ mục để giải quyết ORDER BY . Điều này làm cho truy vấn chậm.

Kết luận

Sử dụng ORDER BY -order_line_groups.sequence làm cho truy vấn chậm. Hơn nữa, nó không cung cấp một cách tốt để sắp xếp tập hợp kết quả khi loại cột sequence là một loại chuỗi.



  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 để bạn nhận được đầu ra có định dạng bảng từ MySQL ở chế độ không tương tác?

  2. php lỗi kết nối MySql

  3. Cách nhận giá trị từ URL

  4. Điền vào CHÈN với Kết quả từ CHỌN

  5. MySQL cung cấp số lượng hàng dao động khi tôi truy vấn lược đồ?