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

Tampilkan pesan terbaru dari tabel pesan, kelompokkan berdasarkan pengguna

Ini seharusnya lebih efisien:

SELECT u.name, sub.*
FROM  (
   SELECT DISTINCT ON (1)
          m.message_from AS user_id
        , m.message AS last_message
   FROM   users    u
   JOIN   messages m ON m.message_to = u.id
   WHERE  u.name = 'Paul'   -- must be unique
   ORDER  BY 1, m.id DESC
   ) sub
JOIN  users u ON sub.user_id = u.id;

Hitung semua pengguna dengan pesan terbaru di subquery sub menggunakan DISTINCT ON . Kemudian gabungkan dengan users kedua kalinya untuk menyelesaikan nama.

Detail untuk DISTINCT ON :
Pilih baris pertama di setiap grup GROUP BY?

Selain:Menggunakan "id" dan "name" sebagai nama kolom bukanlah konvensi penamaan yang sangat membantu.



  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 KECUALI Bekerja di PostgreSQL

  2. pgbackup di Heroku tidak ditemukan

  3. Mengapa PostgreSQL menggabungkan pengguna dan grup menjadi peran?

  4. Unduh sebagian database dari heroku

  5. Menyortir catatan dari PostgreSQL dengan beberapa titik desimal (.)