PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL , Изберете от 2 таблици, но само последния елемент от таблица 2

Използвайте PostgreSQL разширение DISTINCT ON :

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

Това ще вземе първия ред от всеки document.id клъстер в ORDER BY поръчка.

Тестови скрипт за проверка:

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. доставчик за PostgreSQL в .net с поддръжка за TransactionScope

  2. Как да защитите своята PostgreSQL база данни - 10 съвета

  3. Rails Postgres функционални индекси

  4. Postgis SQL за най-близките съседи

  5. Първични ключове с Apache Spark