Вам нужно 3 случайных песни за плейлист . Одни только order by
и limit
не могут этого сделать, поскольку они действуют на весь набор результатов, в то время как вам необходимо каким-то образом перемешивать и ограничивать в каждой группе.
Предполагая MySQL 8.0, вы можете использовать row_number()
с предложением order by rand()
; это назначает случайный ранг каждой записи в группах записей, имеющих один и тот же список воспроизведения, который затем можно использовать для фильтрации:
select id, options
from (
select
t.*,
row_number() over(partition by playlis_id order by rand()) rn
from mytable t
where playlist_id in (7, 9)
) t
where rn <= 3