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

PostgreSQL , Pilih dari 2 tabel, tetapi hanya elemen terbaru dari tabel 2

Gunakan PostgreSQL ekstensi DISTINCT ON :

SELECT  DISTINCT ON (documents.id) *
FROM    document
JOIN    updates
ON      updates.document_id = document_id
ORDER BY
        documents.id, updates.date DESC

Ini akan mengambil baris pertama dari setiap document.id cluster di ORDER BY pesan.

Uji skrip untuk memeriksa:

SELECT  DISTINCT ON (documents.id) *
FROM    (
        VALUES
        (1, 'Test Title'),
        (2, 'Test Title 2')
        ) documents (id, title)
JOIN    (
        VALUES
        (1, 1, '2006-01-01'::DATE),
        (2, 1, '2007-01-01'::DATE),
        (3, 1, '2008-01-01'::DATE),
        (4, 2, '2009-01-01'::DATE),
        (5, 2, '2010-01-01'::DATE)
        ) updates (id, document_id, date)
ON      updates.document_id = documents.id
ORDER BY
        documents.id, updates.date DESC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Haruskah saya menyertakan SELECT dalam transaksi?

  2. KESALAHAN:batasan yang tidak memuaskan saat menginstal PostGIS pada gambar Alpine Docker

  3. Bagaimana cara mengubah zaman Unix menjadi stempel waktu

  4. Prosedur tersimpan Postgresql mengembalikan tabel semua kolom

  5. Mengapa program C saya dapat berjalan di git bash, tetapi tidak dalam cmd?