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

MYSQL chọn các bài đăng mới nhất từ ​​các bảng

Điều ID sẽ vẫn hoạt động về mặt lý thuyết, miễn là ID không bao giờ thay đổi ...

Tôi khuyên bạn nên sử dụng trường dấu thời gian trong cấu trúc bảng được gọi là "ngày" và sử dụng "CURRENT_TIMESTAMP" làm giá trị mặc định, trường này sẽ tự động điền ngày / giờ vào bản ghi khi chèn ...

Đặt hàng theo trường này DESC, giới hạn x

Ngoài ra, tôi đã gặp nhiều trường hợp dữ liệu sai xuất hiện do nhóm ... Hãy đảm bảo dữ liệu của bạn chính xác trước khi áp dụng ORDER BY và LIMIT

Để nhận các bài đăng từ user1 đến user1, không cần phải nhóm theo:

SELECT * FROM posts 
WHERE toID=fromID
ORDER BY date DESC LIMIT 3

Để nhận các bài đăng từ * tới user1:

SELECT * FROM posts 
WHERE toID="USER1_ID"
ORDER BY date DESC LIMIT 3

Để nhận bài đăng từ * tới user1, chỉ những người dùng duy nhất:

SELECT * FROM posts 
WHERE toID="USER1_ID"
GROUP BY FromID
ORDER BY date DESC LIMIT 3

Đôi khi bạn sẽ gặp phải sự cố trong đó các bản ghi GROUPED không được sắp xếp theo ORDER BY, bởi vì ORDER BY được áp dụng cho kết quả SAU KHI áp dụng nhóm ... Để đạt được giải pháp:

SELECT * FROM (
  SELECT * FROM posts 
  WHERE toID="USER1_ID"
  ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3

Để có được 3 người dùng gần đây nhất đã gửi cho mình một bài đăng:

SELECT * FROM (
  SELECT * FROM posts 
  WHERE toID=fromID
  ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để MIN () và MAX () hoạt động trên chuỗi CHAR / VARCHAR trong MySQL?

  2. Cơ sở dữ liệu tên địa lý:nhận được hệ thống phân cấp đầy đủ (quốc gia -> admin1 -> admin2 -> thành phố) với một truy vấn mysql duy nhất

  3. Khi nào thì thêm chỉ mục trên trường bảng SQL (MySQL)?

  4. Cài đặt lỗi / cắt bớt varchar quá dài trong MySQL

  5. Nhận giá trị cao thứ hai trong bảng MySQL