sql >> Databáze >  >> RDS >> Mysql

Výběr MySQL podle nejnovějšího časového razítka

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

Upravit:

Mimochodem, v případě, že vás zajímá, proč váš původní dotaz nefungoval, pojďme si je rozebrat:

  • vyberte nějaké položky z my_table ...
  • kde user_2 =22
  • a timestamp =(nějaká hodnota, nechme ji zatím stranou)
  • limit 1

Nyní se vraťme k tomu timestamp hodnota, pochází z vašeho dílčího dotazu:

SELECT MAX( timestamp ) FROM my_table

Upozorňujeme, že tento dílčí dotaz neomezuje žádné řádky založené na user_2 -- zeptá se, jaké je maximální časové razítko v celé tabulce . Toto maximální časové razítko je první ve vaší tabulce výše:(user_1 =23, user_2 =25, časové razítko =2012-08-10 22:00:00).

Pojďme to tedy připojit zpět k dotazu nejvyšší úrovně:

  • vyberte nějaké položky z my_table ...
  • kde uživatel_2 =22
  • a časové razítko =2012-08-10 22:00:00
  • limit 1

... a můžete vidět, že takový řádek neexistuje.



  1. Výjimka ORA-08103:objekt již neexistuje při použití setfetchsize Hibernate

  2. Jak odstranit hodnotu typu enum v postgresu?

  3. Chyba připojení SSL při připojování k RDS MySQL z Django

  4. Je nutné DbCommand po použití zlikvidovat?