Я пытаюсь извлечь 5 самых последних записей из базы данных MySQL, затем сгруппировать их по USER, затем, после их группировки, получить больше записей, пока у меня не будет 5 уникальных пользователей, упорядоченных по дате.В идеале я хотел бы сделать это одним запросом.
База данных:
-------------
| user | item |
-------------
| 1 | aaa |
| 3 | bbb |
| 1 | ccc |
| 2 | ddd |
| 3 | iii |
| 4 | eee |
| 6 | fff |
| 5 | ggg |
| 1 | hhh |
-------------
Сейчас у меня есть этот запрос:
SELECT user,GROUP_CONCAT(item)
FROM database
GROUP BY user
ORDER BY date DESC
LIMIT 5
Но это дает мне 5 уникальных записей со ВСЕМИ элементами для каждого уникального ПОЛЬЗОВАТЕЛЯ, напримерthis:
--------------------
| user | items |
--------------------
| 1 | aaa,ccc,hhh |
| 3 | bbb,iii |
| 2 | ddd |
| 4 | eee |
| 6 | fff |
--------------------
В предыдущем примере у пользователя 1 не должно быть элемента "hhh", потому что перед этой записью находится 7 записей с 5 уникальными ПОЛЬЗОВАТЕЛЯМИ.Вместо этого я хочу получить первые 5 записей (оканчивающиеся на USER 3 iii), затем группировать дубликаты записей пользователя 1 и пользователя 3, а затем получить еще две записи для достижения LIMIT 5, например:
--------------------
| user | items |
--------------------
| 1 | aaa,ccc |
| 3 | bbb,iii |
| 2 | ddd |
| 4 | eee |
| 6 | fff |
--------------------
Можно ли это сделать с помощью одного запроса, чтобы мне не приходилось извлекать записи, объединять, а затем извлекать больше записей?