У меня есть таблица MySQL с именем items
, которая содержит тысячи записей. Каждая запись имеет поле user_id
и поле created
(datetime).
Попытка собрать запрос в SELECT
25 строк, передавая строку пользовательских идентификаторов в качестве условия и отсортировав по created DESC
.
В некоторых случаях может быть только несколько пользовательских идентификаторов, в то время как в других случаях они могут быть сотнями.
Если результирующий набор больше 25, я хочу сократить его, удалив дубликаты user_id
записей. Например, если для user_id = 3
существует две записи, будет включена только самая последняя (согласно created
datetime).
В моих попытках найти решение у меня возникают проблемы, потому что, например, легко получить набор результатов из 100 (допускающий дублирование user_id
записей) или набор результатов из 16 (используя GROUP BY
для уникальные user_id
записи), сложно получить 25.
Один логический подход, который может не быть правильным подходом MySQL, состоит в том, чтобы получить самую последнюю запись для каждого для каждого user_id
, а затем, если набор результатов меньше 25, начать добавлять вторую запись для каждого user_id
до тех пор, пока не будет достигнут предел в 25 записей (может потребоваться третья, четвертая и т. Д. Запись для каждого user_id
).
Можно ли это сделать с помощью запроса MySQL или мне нужно взять большой набор результатов и сократить его до 25 с помощью кода?