Teoretycznie rzecz z identyfikatorem nadal działałaby, pod warunkiem, że identyfikator nigdy się nie zmieni...
Zalecam użycie pola znacznika czasu w strukturze tabeli o nazwie „data” i użycie „CURRENT_TIMESTAMP” jako wartości domyślnej, spowoduje to automatyczne wypełnienie daty/godziny w rekordzie po wstawieniu...
Uporządkuj według tego pola DESC, limit x
Doświadczyłem również wielu przypadków pojawiania się błędnych danych dzięki grupowaniu... Upewnij się, że Twoje dane są poprawne przed zastosowaniem ORDER BY i LIMIT
Aby uzyskać posty od użytkownika 1 do użytkownika 1, nie ma potrzeby grupowania według:
SELECT * FROM posts
WHERE toID=fromID
ORDER BY date DESC LIMIT 3
Aby otrzymywać posty od * do użytkownika 1:
SELECT * FROM posts
WHERE toID="USER1_ID"
ORDER BY date DESC LIMIT 3
Aby otrzymywać posty od * do użytkownika1, tylko unikalni użytkownicy:
SELECT * FROM posts
WHERE toID="USER1_ID"
GROUP BY FromID
ORDER BY date DESC LIMIT 3
Czasami napotkasz problem polegający na tym, że rekordy GROUPED nie są uporządkowane według ORDER BY, ponieważ ORDER BY jest stosowane do wyniku PO zastosowaniu grupowania... Aby uzyskać obejście:
SELECT * FROM (
SELECT * FROM posts
WHERE toID="USER1_ID"
ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3
Aby uzyskać 3 ostatnich użytkowników, którzy ostatnio wysłali do siebie posta:
SELECT * FROM (
SELECT * FROM posts
WHERE toID=fromID
ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3