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

Ưu tiên ORDER BY hơn GROUP BY trong MySQL mà không có truy vấn con

Theo định nghĩa, ORDER BY được xử lý sau nhóm với GROUP BY. Theo định nghĩa, cách khái niệm mà bất kỳ câu lệnh SELECT nào được xử lý là:

  1. Tính toán tích cacte của tất cả các bảng được tham chiếu trong mệnh đề FROM
  2. Áp dụng các tiêu chí kết hợp từ mệnh đề FROM để lọc kết quả
  3. Áp dụng tiêu chí bộ lọc trong mệnh đề WHERE để lọc thêm kết quả
  4. Nhóm các kết quả thành các tập hợp con dựa trên mệnh đề GROUP BY, thu gọn kết quả thành một hàng cho mỗi tập hợp con đó và tính toán các giá trị của bất kỳ hàm tổng hợp nào - SUM() , MAX() , AVG() , v.v. - cho mỗi tập hợp con như vậy. Lưu ý rằng nếu không có mệnh đề GROUP BY nào được chỉ định, kết quả được coi như thể có một tập hợp con duy nhất và bất kỳ hàm tổng hợp nào áp dụng cho toàn bộ tập kết quả, thu gọn nó thành một hàng.
  5. Lọc các kết quả hiện được nhóm lại dựa trên mệnh đề HAVING.
  6. Sắp xếp kết quả dựa trên mệnh đề ORDER BY.

Tất nhiên, các cột duy nhất được phép trong tập kết quả của một mệnh đề SELECT với mệnh đề GROUP BY là

  • Các cột được tham chiếu trong mệnh đề GROUP BY
  • Các hàm tổng hợp (chẳng hạn như MAX() )
  • chữ / hằng số
  • biểu thức bắt nguồn từ bất kỳ biểu thức nào ở trên.

Chỉ những triển khai SQL bị hỏng mới cho phép những thứ như select xxx,yyy,a,b,c FROM foo GROUP BY xxx,yyy - các tham chiếu đến colulmsn a, b và c là vô nghĩa / không xác định, vì các nhóm riêng lẻ đã được thu gọn thành một hàng duy nhất,



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. thiệt hại tiêm mysql?

  2. Hiệu suất SQL tìm kiếm các chuỗi dài

  3. Không thể tìm nạp id hàng bằng pdo

  4. MySql nhận xét cho các cột của một dạng xem?

  5. Cấu trúc MySQL cho bản dịch