как на MySQL получить не одно последнее сообщение с каждым пользователем .а несколько?

интернет MySQL базы данных

как получить не одно последнее сообщение с каждым пользователем, а несколько? жестко заданное количество например по три последних сообщений с каждым пользователем


такой вариант даст только по одному последнему

INSERT INTO messages (id, from_id, to_id, text) VALUES
(1, 1, 2, 'from 1 to 2 #1'),
(2, 1, 2, 'from 1 to 2 #2'),
(3, 2, 1, 'from 2 to 1 #1'),
(4, 2, 1, 'from 2 to 1 #2'),
(5, 3, 1, 'from 3 to 1 #1'),
(6, 3, 1, 'from 3 to 1 #2'),
(7, 1, 3, 'from 1 to 3 #1'),
(8, 1, 3, 'from 1 to 3 #2'),
(9, 3, 2, 'from 3 to 2 #1'),
(10, 2, 3, 'from 2 to 3 #1');



SELECT max_ids.visavis_id AS visavis_id,
messages.id AS id,
messages.text AS text
FROM messages
INNER JOIN (
SELECT
CASE
WHEN from_id = 1 THEN to_id
WHEN to_id = 1 THEN from_id
ELSE -1
END AS visavis_id,
MAX(id) AS id
FROM messages
WHERE from_id = 1 or to_id = 1
GROUP BY visavis_id) max_ids
ON (messages.id = max_ids.id);



visavis_id | id | text
------------------------------------------
2 | 4 | "from 2 to 1 #2"
3 | 8 | "from 1 to 3 #2"



а нужно например по 5
Ответы:
Если хотите одним запросом, то читайте до конца эту тему
http://sqlinfo.ru/forum/viewtopic.php?id=1742


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.