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

Nhóm MySQL theo và đặt hàng theo

Một giải pháp đơn giản là bọc truy vấn thành một lựa chọn con bằng câu lệnh ORDER đầu tiên và áp dụng GROUP BY sau :

SELECT * FROM ( 
    SELECT `timestamp`, `fromEmail`, `subject`
    FROM `incomingEmails` 
    ORDER BY `timestamp` DESC
) AS tmp_table GROUP BY LOWER(`fromEmail`)

Điều này tương tự như sử dụng phép nối nhưng trông đẹp hơn nhiều.

Việc sử dụng các cột không tổng hợp trong mệnh đề SELECT với mệnh đề GROUP BY là không chuẩn. MySQL thường sẽ trả về các giá trị của hàng đầu tiên mà nó tìm thấy và loại bỏ phần còn lại. Mọi mệnh đề ORDER BY sẽ chỉ áp dụng cho giá trị cột được trả về, không áp dụng cho giá trị cột bị loại bỏ.

CẬP NHẬT QUAN TRỌNG Chọn cột không tổng hợp được sử dụng để làm việc trong thực tế nhưng không nên dựa vào. Theo tài liệu MySQL "điều này chủ yếu hữu ích khi tất cả các giá trị trong mỗi cột không được tổng hợp không có tên trong GROUP BY là giống nhau cho mỗi nhóm. Máy chủ được quyền chọn bất kỳ giá trị nào từ mỗi nhóm, vì vậy trừ khi chúng giống nhau, các giá trị được chọn là không xác định . "

Kể từ 5.7.5 ONLY_FULL_GROUP_BY được bật theo mặc định nên các cột không tổng hợp gây ra lỗi truy vấn (ER_WRONG_FIELD_WITH_GROUP)

Như @mikep đã chỉ ra bên dưới, giải pháp là sử dụng ANY_VALUE () từ 5,7 trở lên

Xem http://www.cafewebmaster.com/mysql-order-sort-group https://dev.mysql.com/doc /refman/5.6/en/group-by-handling.html https://dev.mysql.com/doc /refman/5.7/en/group-by-handling.html https://dev.mysql.com /doc/refman/5.7/en/misosystem-functions.html# Chức năng_any-value



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có lý do gì để lo lắng về thứ tự cột trong bảng?

  2. Cách tải hình ảnh lên cơ sở dữ liệu MySQL bằng mã PHP

  3. Làm thế nào để có SQL động trong thủ tục lưu trữ MySQL

  4. Chạy MySQLDump mà không cần khóa bảng

  5. Cách thêm thời gian vào giá trị ngày giờ trong MySQL