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

Избиране на редове, подредени по една колона и различни от друга

Съвсем ясен въпрос :)

SELECT t1.* FROM purchases t1
LEFT JOIN purchases t2
ON t1.address_id = t2.address_id AND t1.purchased_at < t2.purchased_at
WHERE t2.purchased_at IS NULL
ORDER BY t1.purchased_at DESC

И най-вероятно по-бърз подход:

SELECT t1.* FROM purchases t1
JOIN (
    SELECT address_id, max(purchased_at) max_purchased_at
    FROM purchases
    GROUP BY address_id
) t2
ON t1.address_id = t2.address_id AND t1.purchased_at = t2.max_purchased_at
ORDER BY t1.purchased_at 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

  2. Postgresql заявка между периоди от време

  3. Вземете таблица и колона, притежаващи последователност

  4. Изберете колони с конкретни имена на колони в PostgreSQL

  5. Как да изтриете дублиращи се редове без уникален идентификатор