Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pilih Pesan Terbaru Antara komunikasi dua pengguna di 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)

Saya merekomendasikan untuk menggunakan id urutan unik di tabel Anda untuk menghindari GROUP BY eksternal .Jika Anda memiliki message_id unik yang bertambah (yaitu message_id yang lebih besar sesuai dengan sendtime nanti ), kuerinya akan jauh lebih sederhana:

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. Cara Memeriksa apakah ada nilai di database MySQL

  2. Terhubung ke server MySQL jarak jauh dengan SSL dari PHP

  3. Bagaimana saya bisa mencegah injeksi SQL di PHP?

  4. At-Sign dalam pernyataan SQL sebelum nama kolom

  5. Bagaimana Fungsi CHARACTER_LENGTH() Bekerja di MySQL