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

MySQL Seleziona per timestamp più recente

SELECT * FROM my_table -- standard stuff
   WHERE user_2 = 22 -- predicate
   ORDER BY timestamp DESC -- this means highest number (most recent) first
   LIMIT 1; -- just want the first row

Modifica:

A proposito, se sei curioso di sapere perché la tua query originale non ha funzionato, analizziamo i pezzi:

  • seleziona alcune cose da my_table ...
  • dove user_2 =22
  • e timestamp =(qualche valore, mettiamolo da parte per ora)
  • limite 1

Ora, tornando a quel timestamp valore, proviene dalla tua sottoquery:

SELECT MAX( timestamp ) FROM my_table

Tieni presente che questa sottoquery non limita le righe in base a user_2 -- chiede qual è il timestamp massimo nell'intera tabella . Quel timestamp massimo è il primo nella tabella sopra:(user_1 =23, user_2 =25, timestamp =2012-08-10 22:00:00).

Quindi, ricolleghiamolo alla query di primo livello:

  • seleziona alcune cose da my_table ...
  • dove utente_2 =22
  • e timestamp =10-08-2012 22:00:00
  • limite 1

... e puoi vedere che non c'è una tale riga.