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

Vui lòng giải thích chức năng của nhóm select max (...) ... theo trong sql

Trong trường hợp sử dụng MAX() GROUP BY về cơ bản mệnh đề cho công cụ truy vấn biết cách nhóm các mục từ đó xác định giá trị tối đa. Trong ví dụ đầu tiên của bạn, bạn chỉ chọn một cột duy nhất, vì vậy không cần phải nhóm. Nhưng trong ví dụ thứ hai của bạn, bạn có nhiều cột. Vì vậy, bạn cần cho công cụ truy vấn biết cách xác định công cụ nào sẽ được so sánh để tìm ra giá trị tối đa.

Bạn đã yêu cầu nó nhóm theo id cột. Có nghĩa là nó sẽ so sánh các bản ghi có cùng id và cung cấp cho bạn giá trị tối đa cho mỗi id duy nhất . Vì mọi bản ghi đều có một id khác nhau , về cơ bản bạn đã không làm bất cứ điều gì với điều khoản đó.

Nó đã nhóm tất cả các bản ghi với một id trong tổng số 1 (là một bản ghi duy nhất) và trả lại bản ghi có id tối đa từ nhóm đó (chính là bản ghi đó). Nó cũng làm như vậy đối với 2 , 3 , v.v.

Trong trường hợp ba cột được hiển thị ở đây, nơi duy nhất hợp lý để nhóm các bản ghi của bạn sẽ là trên test_id cột. Một cái gì đó như thế này:

SELECT MAX(id), title, test_id
FROM images
WHERE image IS NOT null 
GROUP BY test_id

Điều này sẽ nhóm chúng theo test_id , vì vậy kết quả sẽ bao gồm các bản ghi 6 (id tối đa cho test_id 0), 4 (id tối đa cho test_id 1) và 8 (id tối đa cho test_id 2). Bằng cách chia các bản ghi thành ba nhóm dựa trên ba giá trị duy nhất trong test_id , nó có thể tìm thấy một id "tối đa" một cách hiệu quả trong mỗi nhóm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng xóa SQLite của Android không thực sự xóa các hàng

  2. Làm cách nào để thực thi theo chương trình WHEN và THEN trên bản cập nhật MySQL bằng Python và Django?

  3. Cần hỗ trợ truy cập cơ sở dữ liệu mysql bằng node.js

  4. Cách tạo và thực thi các hàm và thủ tục được lưu trữ trong MySQL

  5. Cách tải lên và tải xuống các tệp PHP và MySQL