Идентификаторът все още ще работи теоретично, при условие че идентификаторът никога не се променя...
Бих препоръчал да използвате поле за клеймо за време в структурата на таблицата, наречено „дата“, и да използвате „CURRENT_TIMESTAMP“ като стойност по подразбиране, това ще попълни автоматично датата/часа в записа при вмъкване...
Подреждане по това поле DESC, ограничение x
Освен това имах много случаи на появяване на грешни данни благодарение на групирането... Уверете се, че данните ви са правилни, преди да се приложат ORDER BY и LIMIT
За получаване на публикации от потребител1 до потребител1 няма нужда да групирате по:
SELECT * FROM posts
WHERE toID=fromID
ORDER BY date DESC LIMIT 3
За получаване на публикации от * до потребител1:
SELECT * FROM posts
WHERE toID="USER1_ID"
ORDER BY date DESC LIMIT 3
За получаване на публикации от * до потребител1, само уникални потребители:
SELECT * FROM posts
WHERE toID="USER1_ID"
GROUP BY FromID
ORDER BY date DESC LIMIT 3
Понякога ще се натъкнете на проблема, при който ГРУПИРАНИТЕ записи не са подредени по ORDER BY, тъй като ORDER BY се прилага към резултата СЛЕД като групирането е приложено... За да постигнете заобиколно решение:
SELECT * FROM (
SELECT * FROM posts
WHERE toID="USER1_ID"
ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3
За да получите последните 3 потребители, които наскоро са си изпратили публикация:
SELECT * FROM (
SELECT * FROM posts
WHERE toID=fromID
ORDER BY date DESC
) as `derived` GROUP BY FromID LIMIT 3