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

Вземете най-новата дата от групирани MySQL данни

Търсите ли максималната дата за всеки модел?

SELECT model, max(date) FROM doc
GROUP BY model

Ако търсите всички модели, отговарящи на максималната дата на цялата таблица...

SELECT model, date FROM doc
WHERE date IN (SELECT max(date) FROM doc)

[--- Добавено ---]

За тези, които искат да показват подробности от всеки запис, съответстващ на най-новата дата във всяка група модели (а не обобщени данни, както се изисква в OP):

SELECT d.model, d.date, d.color, d.etc FROM doc d
WHERE d.date IN (SELECT max(d2.date) FROM doc d2 WHERE d2.model=d.model)

MySQL 8.0 и по-нови поддържат OVER клауза, която дава същите резултати малко по-бързо за по-големи набори от данни.

SELECT model, date, color, etc FROM (SELECT model, date, color, etc, 
  max(date) OVER (PARTITION BY model) max_date FROM doc) predoc 
WHERE date=max_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. Как да изтрия mysql ред след изтичане на времето?

  2. Как да поправите „MySQL ERROR 1819 (HY000):“ в Linux

  3. Решението на подзаявката връща повече от 1 ред грешка

  4. Настройки на множество центрове за данни с помощта на Galera Cluster за MySQL или MariaDB

  5. Как да вмъкнете данни от една таблица на база данни в друга таблица на база данни в Mysql