sql >> Base de Datos >  >> RDS >> Mysql

Selección de MySQL por la marca de tiempo más reciente

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:

Por cierto, en caso de que tengas curiosidad por saber por qué no funcionó tu consulta original, analicemos las partes:

  • seleccione algunas cosas de my_table ...
  • donde user_2 =22
  • y timestamp =(algún valor, dejémoslo a un lado por ahora)
  • límite 1

Ahora, volviendo a esa timestamp value, proviene de su subconsulta:

SELECT MAX( timestamp ) FROM my_table

Tenga en cuenta que esta subconsulta no restringe ninguna fila en función de user_2 -- pregunta cuál es la marca de tiempo máxima en toda la tabla . Esa marca de tiempo máxima es la primera en su tabla anterior:(usuario_1 =23, usuario_2 =25, marca de tiempo =2012-08-10 22:00:00).

Entonces, volvamos a conectar eso a la consulta de nivel superior:

  • seleccione algunas cosas de my_table ...
  • donde usuario_2 =22
  • y marca de tiempo =2012-08-10 22:00:00
  • límite 1

... y puedes ver que no hay tal fila.