Đ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