sql >> Databasteknik >  >> RDS >> Mysql

MySQL Välj efter senaste tidsstämpel

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

Redigera:

Förresten, om du är nyfiken på varför din ursprungliga fråga inte fungerade, låt oss dela upp bitarna:

  • välj några saker från my_table ...
  • där user_2 =22
  • och timestamp =(viss värde, låt oss lägga det åt sidan för nu)
  • gräns 1

Nu kommer vi tillbaka till den timestamp värde, kommer det från din underfråga:

SELECT MAX( timestamp ) FROM my_table

Observera att den här underfrågan inte begränsar några rader baserat på user_2 -- den frågar efter vad som är maxtidsstämpeln i hela tabellen . Den maxtidsstämpeln är den första i tabellen ovan:(user_1 =23, user_2 =25, timestamp =2012-08-10 22:00:00).

Så låt oss koppla tillbaka det till frågan på översta nivån:

  • välj några saker från my_table ...
  • där user_2 =22
  • och tidsstämpel =2012-08-10 22:00:00
  • gräns 1

... och du kan se att det inte finns en sådan rad.



  1. Mycket långsam borttagning på mysql-bas med underfråga

  2. visar data från sql från att klicka på svg-karta

  3. SECOND() Exempel – MySQL

  4. värd 'localhost' får inte ansluta till denna MySQL-server (#1130)