sql >> Databáze >  >> RDS >> Mysql

Získejte nejnovější datum ze seskupených dat MySQL

Hledáte maximální datum pro každý model?

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

Pokud hledáte všechny modely odpovídající maximálnímu datu celé tabulky...

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

[--- Přidáno ---]

Pro ty, kteří chtějí zobrazit podrobnosti z každého záznamu odpovídající poslednímu datu v rámci každé modelové skupiny (nikoli souhrnná data, jak je požadováno v 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 a novější podporuje OVER klauzule, což přináší stejné výsledky o něco rychleji pro větší soubory dat.

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. Read Committed je nutností pro distribuované databáze SQL kompatibilní s Postgres

  2. Upgradujte PostgreSQL z 9.6 na 10.0 na Ubuntu 16.10

  3. Nerozlišují názvy funkcí v PostgreSQL velká a malá písmena?

  4. Kdy použít STRAIGHT_JOIN s MySQL