Het ID-ding zou theoretisch nog steeds werken, op voorwaarde dat de ID's nooit veranderen...
Ik zou aanraden om een tijdstempelveld in de tabelstructuur genaamd "date" te gebruiken en de "CURRENT_TIMESTAMP" als standaardwaarde te gebruiken, dit zal automatisch de datum/tijd in het record invullen bij het invoegen...
Bestel via dit veld DESC, limiet x
Ik heb ook veel gevallen meegemaakt waarin de verkeerde gegevens werden weergegeven dankzij groepering... Zorg ervoor dat uw gegevens correct zijn voordat ORDER BY en LIMIT wordt toegepast
Om berichten van gebruiker1 naar gebruiker1 te krijgen, is het niet nodig om te groeperen op:
SELECT * FROM posts
WHERE toID=fromID
ORDER BY date DESC LIMIT 3
Om berichten van * naar gebruiker1 te krijgen:
SELECT * FROM posts
WHERE toID="USER1_ID"
ORDER BY date DESC LIMIT 3
Om berichten van * naar gebruiker1 te krijgen, alleen unieke gebruikers:
SELECT * FROM posts
WHERE toID="USER1_ID"
GROUP BY FromID
ORDER BY date DESC LIMIT 3
Soms loop je tegen het probleem aan dat GROUPED records niet op ORDER BY worden geordend, omdat ORDER BY op het resultaat wordt toegepast NADAT de groepering is toegepast... Om een tijdelijke oplossing te bereiken:
SELECT * FROM (
SELECT * FROM posts
WHERE toID="USER1_ID"
ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3
Om de laatste 3 gebruikers te krijgen die zichzelf het laatst een bericht hebben gestuurd:
SELECT * FROM (
SELECT * FROM posts
WHERE toID=fromID
ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3