Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL Selecionar por carimbo de data/hora mais 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

Editar:

A propósito, caso você esteja curioso por que sua consulta original não funcionou, vamos dividir as partes:
  • selecione algumas coisas de my_table ...
  • onde user_2 =22
  • e timestamp =(algum valor, vamos deixar de lado por enquanto)
  • limite 1

Agora, voltando ao timestamp value, ele vem de sua subconsulta:
SELECT MAX( timestamp ) FROM my_table

Observe que esta subconsulta não restringe nenhuma linha com base em user_2 -- ele pergunta qual é o timestamp máximo em toda a tabela . Esse timestamp máximo é o primeiro em sua tabela acima:(user_1 =23, user_2 =25, timestamp =2012-08-10 22:00:00).

Então, vamos conectar isso de volta à consulta de nível superior:
  • selecione algumas coisas de my_table ...
  • onde usuário_2 =22
  • e carimbo de data/hora =2012-08-10 22:00:00
  • limite 1

... e você pode ver que não há essa linha.