Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wybór MySQL według najnowszego znacznika czasu

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

Edytuj:

Przy okazji, jeśli jesteś ciekawy, dlaczego Twoje pierwotne zapytanie nie zadziałało, podzielmy elementy:

  • wybierz jakieś rzeczy z my_table ...
  • gdzie user_2 =22
  • i timestamp =(jaka wartość, na razie odłóżmy ją na bok)
  • limit 1

A teraz wracając do tego timestamp wartość, pochodzi z podzapytania:

SELECT MAX( timestamp ) FROM my_table

Zauważ, że to podzapytanie nie ogranicza żadnych wierszy na podstawie user_2 -- pyta o maksymalny znacznik czasu w całej tabeli . Maksymalna sygnatura czasowa jest pierwszą w powyższej tabeli:(user_1 =23, user_2 =25, timestamp =2012-08-10 22:00:00).

Więc podłączmy to z powrotem do zapytania najwyższego poziomu:

  • wybierz jakieś rzeczy z my_table ...
  • gdzie użytkownik_2 =22
  • i znacznik czasu =2012-08-10 22:00:00
  • limit 1

... i widać, że nie ma takiego rzędu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak odzyskać/odtworzyć domyślną bazę danych „mysql” mysql

  2. Wybór wielu tabel a JOIN (wydajność)

  3. Jak wziąć mysqldump z UTF8?

  4. Jak zmienić strefę czasową MySQL w połączeniu z bazą danych za pomocą Javy?

  5. BŁĄD 1130 (HY000):Host „” nie może połączyć się z tym serwerem MySQL