Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Uzyskaj najnowszą datę z pogrupowanych danych MySQL

Szukasz maksymalnej daty dla każdego modelu?

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

Jeśli szukasz wszystkich modeli pasujących do maksymalnej daty całej tabeli...

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

[--- Dodano ---]

Dla tych, którzy chcą wyświetlić szczegóły z każdego rekordu pasującego do ostatniej daty w każdej grupie modeli (nie dane podsumowujące, o które prosiliśmy w 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 i nowsze obsługują OVER klauzula, dając te same wyniki nieco szybciej w przypadku większych zestawów danych.

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. Jak zapętlić zapytanie MySQL przez PDO w PHP?

  2. Jak MySQL przetwarza ORDER BY i LIMIT w zapytaniu?

  3. Zakoduj swój pierwszy interfejs API za pomocą Node.js i Express:połącz bazę danych

  4. Jak mogę połączyć dwie tabele MySQL?

  5. Połącz się z mysql na Amazon EC2 ze zdalnego serwera