Я предполагаю, что когда пользователь читает сообщение, его идентификатор где-то хранится.Давайте пока предположим, что он находится в таблице read_posts
, имеющей формат:
UID | ID
. В этом случае ваш запрос становится:
SELECT * FROM posts WHERE ID NOT IN (SELECT id FROM read_posts WHERE uid = <user's id>);
Если вы разрешаете только чтение последовательнои сохраняя данные в одной таблице, запрос становится еще проще:
SELECT p.* FROM posts p, read_posts rp WHERE p.ID > rp.ID AND rp.UID = <user id>;
Синтаксис этого запроса может немного отличаться, но общая идея, я думаю, ясна.