sql >> Databasteknik >  >> RDS >> Mysql

Få det senaste datumet från grupperad MySQL-data

Letar du efter maxdatum för varje modell?

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

Om du letar efter alla modeller som matchar maxdatumet för hela bordet...

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

[--- Tillagd ---]

För dem som vill visa detaljer från varje post som matchar det senaste datumet inom varje modellgrupp (inte sammanfattande data, som efterfrågas i 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 och nyare stöder OVER klausul, vilket ger samma resultat lite snabbare för större datamängder.

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. Hur man ställer in boolvärde i SQL

  2. Vad är en lagrad procedur?

  3. Dumpning av datablock

  4. Concat det andra kolumnvärdet om det första kolumnvärdet är detsamma