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

PostgreSQL Memilih Entri Terbaru untuk ID yang Diberikan

Ada sekitar 5 cara berbeda untuk melakukannya, tetapi ini salah satunya:

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

Dan ini satu lagi:

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

Satu lagi:

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

Ok, saya terbawa suasana, ini yang terakhir saya posting (untuk saat ini):

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. Tidak dapat INSERT:ERROR:nilai array harus dimulai dengan { atau informasi dimensi

  2. Dapatkan nilai dari baris pertama dan terakhir per grup

  3. Formulir Django ke basis data kueri (model)

  4. PostgreSQL :berikan string hingga saat ini DD/MM/YYYY

  5. Bagaimana cara menambahkan batasan kaskade yang dihapus?