To ID by teoreticky stále fungovalo za předpokladu, že se ID nikdy nezmění...
Doporučil bych použít pole časového razítka ve struktuře tabulky nazvané "date" a použít "CURRENT_TIMESTAMP" jako výchozí hodnotu, při vložení se automaticky vyplní datum/čas v záznamu...
Seřaďte podle tohoto pole DESC, limit x
Také jsem zaznamenal mnoho případů, kdy se díky seskupování objevila nesprávná data... Ujistěte se, že jsou vaše data správná, než se použije ORDER BY a LIMIT
Pro získávání příspěvků od uživatele 1 k uživateli 1 není potřeba seskupovat podle:
SELECT * FROM posts
WHERE toID=fromID
ORDER BY date DESC LIMIT 3
Pro získávání příspěvků od * uživateli1:
SELECT * FROM posts
WHERE toID="USER1_ID"
ORDER BY date DESC LIMIT 3
Pro získávání příspěvků od * uživateli1 pouze unikátní uživatelé:
SELECT * FROM posts
WHERE toID="USER1_ID"
GROUP BY FromID
ORDER BY date DESC LIMIT 3
Někdy narazíte na problém, kdy GROUPED záznamy nejsou seřazeny podle ORDER BY, protože ORDER BY se použije na výsledek PO použití seskupení... Řešení:
SELECT * FROM (
SELECT * FROM posts
WHERE toID="USER1_ID"
ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3
Chcete-li získat poslední 3 uživatele, kteří si v poslední době poslali příspěvek:
SELECT * FROM (
SELECT * FROM posts
WHERE toID=fromID
ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3