Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL Sélectionner par horodatage le plus récent

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

Modifier :

Au fait, au cas où vous seriez curieux de savoir pourquoi votre requête d'origine n'a pas fonctionné, décomposons les éléments :

  • sélectionnez des éléments dans my_table ...
  • user_2 =22
  • et timestamp =(une certaine valeur, laissons-la de côté pour l'instant)
  • limite 1

Maintenant, revenons à cet timestamp valeur, elle provient de votre sous-requête :

SELECT MAX( timestamp ) FROM my_table

Notez que cette sous-requête ne restreint aucune ligne basée sur user_2 -- il demande quel est l'horodatage maximum dans toute la table . Cet horodatage maximum est le premier dans votre tableau ci-dessus :(user_1 =23, user_2 =25, timestamp =2012-08-10 22:00:00).

Relions donc cela à la requête de niveau supérieur :

  • sélectionnez des éléments dans my_table ...
  • où user_2 =22
  • et horodatage =2012-08-10 22:00:00
  • limite 1

... et vous pouvez voir qu'il n'y a pas une telle rangée.