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

Chọn tin nhắn mới nhất giữa giao tiếp của hai người dùng trong mysql

SELECT data.* FROM 
(SELECT MAX(sendtime) AS sendtime 
         FROM data 
         WHERE 1 IN (sender,receiver)
         GROUP BY IF (1 = sender,receiver,sender)) AS latest
LEFT JOIN data ON latest.sendtime = data.sendtime AND 1 IN (data.sender, data.receiver)
GROUP BY IF (1 = data.sender,data.receiver,data.sender)

Tôi khuyên bạn nên sử dụng id trình tự duy nhất trong bảng của mình để tránh GROUP BY bên ngoài .Nếu bạn có message_id duy nhất đang tăng dần (tức là message_id lớn hơn tương ứng với sendtime sau ), truy vấn sẽ đơn giản hơn nhiều:

SELECT data.* FROM 
(SELECT MAX(message_id) AS message_id 
         FROM data 
         WHERE 1 IN (sender,receiver)
         GROUP BY IF (1 = sender,receiver,sender)) AS latest
LEFT JOIN data USING(message_id)


  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ững thay đổi trong trường hợp hàng tập kết quả mysql 8 là gì?

  2. MySQL InnoDB Cluster 8.0 - Hướng dẫn hoạt động hoàn chỉnh:Phần thứ hai

  3. cách xuất bản trình cài đặt ứng dụng c # window

  4. Các biểu tượng cột của bàn làm việc mysql có ý nghĩa gì

  5. THÔNG TIN DỮ LIỆU TẢI MySQL với dấu phẩy làm dấu phân tách thập phân