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

PostgreSQL Избиране на най-новия запис за даден идентификатор

Има около 5 различни начина да направите това, но ето един:

SELECT *
FROM yourTable AS T1 
WHERE NOT EXISTS(
    SELECT *
    FROM yourTable AS T2
    WHERE T2.ID = T1.ID AND T2.Date > T1.Date
)

И ето още едно:

SELECT T1.*
FROM yourTable AS T1
LEFT JOIN yourTable AS T2 ON
(
    T2.ID = T1.ID 
    AND T2.Date > T1.Date
)
WHERE T2.ID IS NULL

Още едно:

WITH T AS (
    SELECT *, ROW_NUMBER() OVER(PARTITION BY ID ORDER BY Date DESC) AS rn
    FROM yourTable
)
SELECT * FROM T WHERE rn = 1

Добре, увличам се, ето последното, което ще публикувам (засега):

WITH T AS (
    SELECT ID, MAX(Date) AS latest_date
    FROM yourTable
    GROUP BY ID
)
SELECT yourTable.*
FROM yourTable
JOIN T ON T.ID = yourTable.ID AND T.latest_date = yourTable.Date


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обединяване на връзки към база данни на Celery Worker

  2. Да се ​​изчисли максималната сума на анотирано поле върху групирано по заявка в Django ORM?

  3. Нов начин за персонализиране на вашия PostgreSQL мониторинг с Prometheus

  4. PostgreSQL 'NOT IN' и подзаявка

  5. Как да променя типа на колоната в Heroku?