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

mysql - truy vấn danh sách chuỗi thư với các điều kiện cụ thể

Bạn muốn có tối đa theo nhóm , có thể được tìm thấy bằng cách tham gia Messages bảng tới một truy vấn con xác định dấu thời gian nhận dạng (tối đa) cho mỗi nhóm:

SELECT   Message.request_id,
         Sender.username   AS sender_name,
         Receiver.username AS receiver_name,
         Message.message   AS last_message,
         Message.timestamp AS last_timestamp
FROM     Message NATURAL JOIN (
           SELECT   request_id,
                    sender_id,
                    receiver_id,
                    MAX(timestamp) timestamp
           FROM     Message
           GROUP BY request_id, sender_id, receiver_id
         ) t
    JOIN User Sender   ON   Sender.id = Message.sender_id
    JOIN User Receiver ON Receiver.id = Message.receiver_id
ORDER BY Message.request_id, last_timestamp DESC

Xem nó trên sqlfiddle .

Lưu ý rằng thứ tự tập kết quả của tôi khác với thứ tự mong đợi trong câu hỏi của bạn vì những lý do được đánh dấu trong nhận xét của tôi ở trên :




  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ếu kết nối trong nhóm kết nối jdbc tomcat

  2. .NET Core 2.0 với MySQL:Khóa được chỉ định quá dài; độ dài khóa tối đa là 3072 byte

  3. CHỌN bản ghi mới nhất có giá trị không rỗng trong một cột

  4. Cách chúng tôi có thể tìm tên miền bằng MySQL và biểu thức chính quy

  5. MySQL - Truy vấn CẬP NHẬT với câu lệnh SET phụ thuộc vào kết quả của câu lệnh SET trước đó