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

Sistem pesan pribadi. Cantumkan pesan terakhir dari setiap percakapan

Ini mengasumsikan id adalah kolom kenaikan otomatis:

SELECT MAX(id) AS id
FROM pms
WHERE id_to = 1 OR id_from = 1
GROUP BY (IF(id_to = 1, id_from, id_to))

Dengan asumsi Anda memiliki id_from dan id_to diindeks, variasi ini kemungkinan besar akan berkinerja lebih baik karena MySQL tidak tahu apa yang harus dilakukan dengan OR:

SELECT MAX(id) AS id FROM
(SELECT id, id_from AS id_with
FROM pms
WHERE id_to = 1
UNION ALL
SELECT id, id_to AS id_with
FROM pms
WHERE id_from = 1) t
GROUP BY id_with

Berikut cara mendapatkan pesan untuk id tersebut:

SELECT * FROM pms WHERE id IN
    (SELECT MAX(id) AS id FROM
    (SELECT id, id_from AS id_with
    FROM pms
    WHERE id_to = 1
    UNION ALL
    SELECT id, id_to AS id_with
    FROM pms
    WHERE id_from = 1) t
    GROUP BY id_with)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - InnoDB vs MyISAM

  2. Bagaimana saya bisa mendapatkan kunci asing dari tabel di mysql

  3. Tolong contoh koneksi JavaFX MySQL

  4. Laravel OrderDengan jumlah hubungan

  5. Cara Mengubah Kata Sandi Root MySQL atau MariaDB di Linux