sql >> Database teknologi >  >> RDS >> Mysql

MySQL Vælg efter nyeste tidsstempel

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

Rediger:

Forresten, hvis du er nysgerrig efter, hvorfor din oprindelige forespørgsel ikke virkede, så lad os nedbryde brikkerne:

  • vælg nogle ting fra my_table ...
  • hvor user_2 =22
  • og timestamp =(en vis værdi, lad os lægge det til side for nu)
  • grænse 1

Nu vender vi tilbage til det timestamp værdi, kommer det fra din underforespørgsel:

SELECT MAX( timestamp ) FROM my_table

Bemærk, at denne underforespørgsel ikke begrænser nogen rækker baseret på user_2 -- den spørger efter, hvad der er maks. tidsstemplet i hele tabellen . Det maksimale tidsstempel er det første i din tabel ovenfor:(user_1 =23, user_2 =25, timestamp =2012-08-10 22:00:00).

Så lad os sætte det tilbage til forespørgslen på øverste niveau:

  • vælg nogle ting fra my_table ...
  • hvor bruger_2 =22
  • og tidsstempel =2012-08-10 22:00:00
  • grænse 1

... og du kan se, at der ikke er sådan en række.



  1. MySQL #1140 - Blanding af GROUP-kolonner

  2. Sådan defineres et usigneret heltal i SQLAlchemy

  3. Installer PL/Java 1.5.2 i PostgreSQL 11

  4. Genereret værdi i Postgres