add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
create table song (
song_id int primary key auto_increment,
name varchar(30),
liked int
);
insert into song (name, liked) values
('song1',1),
('song2',9),
('song3',2),
('song4',8),
('song5',10),
('song6',20),
('song7',0),
('song8',15),
('song9',5),
('song10',7);
WITH TOP3SONGS AS
(
SELECT *
FROM song
ORDER BY liked DESC
LIMIT 3
),
RANDOM3SONGS AS
(
SELECT *
FROM song
WHERE song_id NOT IN (select song_id from TOP3SONGS)
ORDER BY rand()
LIMIT 3
)
SELECT *
FROM TOP3SONGS
UNION ALL
SELECT *
FROM RANDOM3SONGS;
song_id name liked
6 song6 20
8 song8 15
5 song5 10
9 song9 5
10 song10 7
7 song7 0
SELECT song.*
FROM song
LEFT JOIN
( SELECT song_id, liked
FROM song
ORDER BY liked DESC
LIMIT 3
) top3songs ON top3songs.song_id = song.song_id
ORDER BY top3songs.liked DESC, RAND()
LIMIT 6;
song_id name liked
6 song6 20
8 song8 15
5 song5 10
4 song4 8
3 song3 2
1 song1 1