Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL Chọn theo Dấu thời gian mới nhất

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

Chỉnh sửa:

Nhân tiện, trong trường hợp bạn tò mò tại sao truy vấn ban đầu của mình không hoạt động, hãy chia nhỏ các phần:

  • chọn một số nội dung từ my_table ...
  • where user_2 =22
  • timestamp = (một số giá trị, hãy tạm gác nó sang một bên)
  • giới hạn 1

Bây giờ, quay lại timestamp đó giá trị, nó đến từ truy vấn con của bạn:

SELECT MAX( timestamp ) FROM my_table

Lưu ý rằng truy vấn con này không hạn chế bất kỳ hàng nào dựa trên user_2 - nó yêu cầu dấu thời gian tối đa trong toàn bộ bảng . Dấu thời gian tối đa đó là dấu thời gian đầu tiên trong bảng của bạn ở trên:(user_1 =23, user_2 =25, timestamp =2012-08-10 22:00:00).

Vì vậy, hãy chuyển nó trở lại truy vấn cấp cao nhất:

  • chọn một số nội dung từ my_table ...
  • nơi người dùng_2 =22
  • và dấu thời gian = 2012-08-10 22:00:00
  • giới hạn 1

... và bạn có thể thấy không có hàng nào như vậy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zend Framework và Mysql - rất chậm

  2. Cách thêm ngày vào ngày trong MySQL

  3. Hàm Isset () trả về true ngay cả khi mục không được đặt

  4. Di chuyển nút trong tập hợp lồng nhau

  5. Hàm NOW () của MySQL với độ chính xác cao