Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Auswahl nach neuestem Zeitstempel

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

Bearbeiten:

Übrigens, falls Sie neugierig sind, warum Ihre ursprüngliche Abfrage nicht funktioniert hat, lassen Sie uns die Teile aufschlüsseln:

  • Wählen Sie etwas aus my_table aus ...
  • wobei user_2 =22
  • und timestamp =(irgendein Wert, legen wir ihn erstmal beiseite)
  • Grenze 1

Kommen wir nun zurück zu diesem timestamp Wert, er stammt aus Ihrer Unterabfrage:

SELECT MAX( timestamp ) FROM my_table

Beachten Sie, dass diese Unterabfrage keine Zeilen basierend auf user_2 einschränkt -- es fragt nach dem maximalen Zeitstempel in der gesamten Tabelle . Dieser maximale Zeitstempel ist der erste in Ihrer obigen Tabelle:(user_1 =23, user_2 =25, timestamp =2012-08-10 22:00:00).

Schließen wir das also wieder an die Abfrage der obersten Ebene an:

  • Wählen Sie etwas aus my_table aus ...
  • wobei user_2 =22
  • und Zeitstempel =2012-08-10 22:00:00
  • Grenze 1

... und Sie können sehen, dass es eine solche Zeile nicht gibt.