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

Hàm tổng hợp có thể làm gì trong mệnh đề ORDER BY?

Kết quả của bạn rõ ràng hơn nếu bạn thực sự chọn các giá trị tổng hợp thay vì các cột từ bảng:

SELECT SUM(id) FROM plant ORDER BY SUM(id)

Điều này sẽ trả về tổng của tất cả các id. Tất nhiên, đây là một ví dụ vô ích vì tập hợp sẽ luôn chỉ tạo ra một hàng, do đó không cần sắp xếp. Lý do bạn nhận được một hàng q với các cột trong truy vấn của mình là vì MySQL chọn một hàng, không phải ngẫu nhiên nhưng cũng không xác định. Nó chỉ xảy ra khi nó là cột đầu tiên trong bảng trong trường hợp của bạn, nhưng những người khác có thể nhận được một hàng khác tùy thuộc vào công cụ lưu trữ, khóa chính, v.v. Do đó, chỉ tổng hợp trong mệnh đề ORDER BY không hữu ích lắm.

Những gì bạn thường muốn làm là nhóm theo một trường nhất định và sau đó sắp xếp bộ kết quả theo một cách nào đó:

SELECT fruit, COUNT(*)
FROM plant
GROUP BY fruit
ORDER BY COUNT(*)

Bây giờ đó là một truy vấn thú vị hơn! Điều này sẽ cung cấp cho bạn một hàng cho mỗi trái cây cùng với tổng số của trái cây đó. Hãy thử thêm một số táo nữa và thứ tự sẽ thực sự bắt đầu có ý nghĩa:

Toàn bộ bảng:

+----+--------+
| id | fruit  |
+----+--------+
|  1 | banana |
|  2 | apple  |
|  3 | orange |
|  4 | apple  |
|  5 | apple  |
|  6 | banana |
+----+--------+

Truy vấn ở trên:

+--------+----------+
| fruit  | COUNT(*) |
+--------+----------+
| orange |        1 |
| banana |        2 |
| apple  |        3 |
+--------+----------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận sản phẩm hàng (phép nhân)

  2. Nhập tệp sql bằng phpmyadmin trong EasyPHP

  3. mysqli_stmt ::bind_param () [mysqli-stmt.bind-param]:Số biến không khớp với số tham số

  4. Đúng / Sai so với 0/1 trong MySQL

  5. SQL JOIN hai bảng với AVG