1

I have a database and would like to select 10 random rows for each User_ID.

So far I have this code, but I'm not sure how to have it select 10 random rows for each User_ID value.

SELECT User_ID 
FROM Database 
ORDER BY RAND() 
LIMIT 10 
GROUP BY User_ID
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
FlightJ23
  • 11
  • 3

1 Answers1

1

This is a pain in MySQL -- prior to 8.0. Here is one method:

select d.*
from (select d.*,
             (@rn := if(@u = user_id, @rn + 1,
                        if(@u := user_id, 1, 1)
                       )
             ) as rn
      from (select d.* from database d order by user_id, rand()
           ) d cross join
           (select @u := 0, @rn := 0) params
     ) d
where rn <= 10;
Gordon Linoff
  • 1,242,037
  • 58
  • 646
  • 786