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

Menemukan pesan terbaru dari tabel, dikelompokkan berdasarkan pengguna di mysql

Coba ini:

pilih *dari pesan yang tidak ada (pilih 1dari pesan mmwhere (mm.fromuser =m.fromuser atau mm.fromuser =m.touser) AND (mm.touser =m.touser atau mm.touser =m.fromuser) dan mm.timestamp> m.timestamp) dan m.fromuser ='user1' atau m.touser ='user1';

demo di sini .

Mungkin akan lebih baik, ke depan, untuk menandai percakapan antara dua pengguna sebagai percakapan tertentu, maka setiap pesan termasuk dalam percakapan, dan dengan demikian menjadi jauh lebih mudah untuk menemukan percakapan yang melibatkan pengguna, dan info tentang pesan yang terkait dengan percakapan. Pokoknya.

Coba yang ini sebagai gantinya. Ugh.

select m.* 
  from messages m 
     left join messages m2 
       on ((m.fromuser = m2.fromuser and m.touser = m2.touser) 
           or (m.fromuser = m2.touser and m.touser = m2.fromuser)) 
         and m.timestamp < m2.timestamp 
  where (m.fromuser = 'user1' or m.touser = 'user1') 
  and m2.id is null;

Ini mungkin lebih unggul dari not exists versi, bahkan jika saya berhasil memperbaikinya.

biola ini benar-benar berfungsi




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mempercepat pembuatan tabel MySQL dari file CSV besar?

  2. Prosedur tersimpan MySql:Bagaimana cara memilih dari tabel prosedur?

  3. Cara Mengatur Ulang Kata Sandi Root di MySQL 8.0

  4. Cara menggabungkan dua kueri SQL dengan klausa ORDER BY yang berbeda

  5. Tidak dapat membuat koneksi JDBC ke MySQL (menggunakan Java, IntelliJ, dan Linux)