PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Permintaan untuk mendapatkan percakapan terakhir untuk kotak masuk pengguna

Sesuai pemahaman saya, Anda perlu mendapatkan pesan terbaru dari percakapan per pengguna (dari 10 percakapan terakhir terakhir)

Pembaruan: Saya telah memodifikasi kueri untuk mendapatkan latest_conversation_message_id untuk setiap percakapan pengguna

Kueri di bawah ini mendapatkan detail untuk user_id = 2 , Anda dapat memodifikasi, users.id = 2 untuk mendapatkannya untuk pengguna lain

SQLFiddle , semoga ini menyelesaikan tujuan Anda

SELECT
    user_id, 
    users.name, 
    users2.name as sent_from_or_sent_to,
    subquery.text as latest_message_of_conversation
FROM
    users
    JOIN
    (
    SELECT
        text,
        row_number() OVER ( PARTITION BY user_id + recipient_id ORDER BY id DESC) AS row_num,
        user_id,
        recipient_id,
        id
    FROM
        private_messages
    GROUP BY
        id,
        recipient_id,
        user_id,
        text
    ) AS subquery ON ( ( subquery.user_id = users.id OR subquery.recipient_id = users.id)  AND row_num = 1 )
    JOIN users as users2 ON ( users2.id = CASE WHEN users.id = subquery.user_id THEN subquery.recipient_id ELSE subquery.user_id END )
WHERE
    users.id = 2
ORDER BY
    subquery.id DESC
LIMIT 10

Info: Kueri mendapatkan pesan terbaru dari setiap percakapan dengan pengguna lain, Jika user_id 2 , mengirim pesan ke user_id 3 , itu juga ditampilkan, karena menunjukkan awal percakapan. Pesan terbaru dari setiap percakapan dengan pengguna lain ditampilkan



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa null||null mengembalikan nilai nol tetapi concat(null,null) mengembalikan string kosong di postgres?

  2. Bagaimana cara kerja tampilan keamanan_barrier PostgreSQL?

  3. Bagaimana saya bisa menggunakan kueri dengan placeholder di dalam tanda kutip? (perl/postgresql)

  4. Cara mengembalikan baris asli di Postgres setelah melanggar batasan unik

  5. docker-compose up &&docker-compose build :kesalahan dengan PostgreSQL