I have a MySQL table called items
that contains thousands of records. Each record has a user_id
field and a created
(datetime) field.
Trying to put together a query to SELECT
25 rows, passing a string of user ids as a condition and sorted by created DESC
.
In some cases, there might be just a few user ids, while in other instances, there may be hundreds.
If the result set is greater than 25, I want to pare it down by eliminating duplicate user_id
records. For instance, if there were two records for user_id = 3
, only the most recent (according to created
datetime) would be included.
In my attempts at a solution, I am having trouble because while, for example, it's easy to get a result set of 100 (allowing duplicate user_id
records), or a result set of 16 (using GROUP BY
for unique user_id
records), it's hard to get 25.
One logical approach, which may not be the correct MySQL approach, is to get the most recent record for each for each user_id
, and then, if the result set is less than 25, begin adding a second record for each user_id
until the 25 record limit is met (maybe a third, fourth, etc. record for each user_id
would be needed).
Can this be accomplished with a MySQL query, or will I need to take a large result set and trim it down to 25 with code?