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

Dữ liệu nhóm Mysql theo thời gian

Nếu bạn đang nhóm theo một (hoặc nhiều) cột thì bạn phải làm gì đó với tất cả các cột không được nhóm để truy vấn của bạn có ý nghĩa.

Bạn phải nói những gì bạn muốn thực hiện với tất cả các giá trị được nhóm. Thường là một cái gì đó như SUM (), AVG (), MIN (), MAX (), GROUP_CONCAT ()

Nếu bạn đang nhóm theo m_from, thì bạn sẽ không thể sắp xếp theo m_time, vì tất cả các bản ghi cho m_from sẽ được nhóm lại với nhau và đối với các giá trị không được nhóm, bạn sẽ nhận được câu trả lời tùy ý, vì bạn đã không chỉ định những việc cần làm với nhóm.

Bạn có thể muốn sử dụng một hàm tổng hợp, chẳng hạn như MAX (m_time) để nhận giá trị cao nhất cho m_time, rồi sắp xếp trên đó.

Tôi muốn đề xuất một cái gì đó như thế này.

 SELECT MAX(m_id),m_from, MAX(m_time) as latest FROM messages 
    WHERE m_to='XXX' OR m_from='XXX' 
    GROUP BY m_from 
    ORDER BY latest DESC;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trộn một bảng trong MySQL với một thủ tục được lưu trữ

  2. Laravel eloquent không cập nhật cột JSON:Chuyển đổi mảng thành chuỗi

  3. Mệnh đề tương đương CHỈ TRONG () MySQL

  4. MySQL sắp xếp theo số lần xuất hiện

  5. Làm cách nào để chọn (các) cột theo vị trí số của chúng trong bảng?