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

SQL, присъединен към последната дата

DISTINCT ON или е ваш приятел. Ето едно решение с правилно синтаксис:

SELECT a.id, b.updated, b.col1, b.col2
FROM   table_a as a
LEFT   JOIN (
   SELECT DISTINCT ON (table_a_id)
          table_a_id, updated, col1, col2
   FROM   table_b
   ORDER  BY table_a_id, updated DESC
   ) b ON a.id = b.table_a_id;

Или, за да получите целия ред от table_b :

SELECT a.id, b.*
FROM   table_a as a
LEFT   JOIN (
   SELECT DISTINCT ON (table_a_id)
          *
   FROM   table_b
   ORDER  BY table_a_id, updated DESC
   ) b ON a.id = b.table_a_id;

Подробно обяснение за тази техника, както и алтернативни решения по този тясно свързан въпрос:
Избиране на първия ред във всяка група GROUP BY?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SELECT EXISTS срещу LIMIT 1

  2. Избиране на средна стойност от записи, групирани по 5-минутни периоди

  3. Postgres:Обединете акаунти в една самоличност чрез общ имейл адрес

  4. Postgresql:формат на датата и изход на местен език

  5. търсене на текст в postgres