ID-tinget ville stadig fungere teoretisk, forudsat at ID'et aldrig ændres...
Jeg vil anbefale at bruge et tidsstempelfelt i tabelstrukturen kaldet "dato" og bruge "CURRENT_TIMESTAMP" som standardværdi, dette vil automatisk udfylde dato/klokkeslæt på posten ved indsættelse...
Bestil efter dette felt DESC, grænse x
Jeg har også oplevet mange tilfælde af forkerte data, der dukkede op takket være gruppering... Sørg for, at dine data er korrekte, før ORDER BY og LIMIT anvendes
For at få indlæg fra bruger1 til bruger1 er der ingen grund til at gruppere efter:
SELECT * FROM posts
WHERE toID=fromID
ORDER BY date DESC LIMIT 3
For at få indlæg fra * til bruger1:
SELECT * FROM posts
WHERE toID="USER1_ID"
ORDER BY date DESC LIMIT 3
For at få indlæg fra * til bruger1, kun unikke brugere:
SELECT * FROM posts
WHERE toID="USER1_ID"
GROUP BY FromID
ORDER BY date DESC LIMIT 3
Nogle gange vil du støde på problemet, hvor GROUPED-poster ikke er sorteret efter ORDER BY, fordi ORDER BY anvendes på resultatet EFTER grupperingen er anvendt... Sådan opnår du en løsning:
SELECT * FROM (
SELECT * FROM posts
WHERE toID="USER1_ID"
ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3
For at få de sidste 3 brugere, der senest har sendt sig selv et indlæg:
SELECT * FROM (
SELECT * FROM posts
WHERE toID=fromID
ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3