Mysql
 sql >> Database >  >> RDS >> Mysql

Join mysql basato su max(timestamp)

Questo problema è abbastanza comune. Hai bisogno di una sottoquery per eliminare il timestamp massimo e il ratetypeid (che è la base per il raggruppamento) e quindi selezionare tutto il resto da un inner join di queste righe di sottoquery e tutto il resto.

Per MySQL:

SELECT ratecode, rate, id, ratetypeid, date, entrytimestamp 

FROM ratedefinitions, 
(SELECT ratetypeid, MAX(entrytimestamp) AS max_timestamp FROM Rates 
GROUP BY ratetypeid) AS inner_table

WHERE

inner_table.ratetypeid = ratetypeid
AND innertable.max_timestamp = timestamp