我有一张带有轨道和专辑列的歌曲表,我想以随机专辑顺序获取它们。即,在每张专辑中,歌曲将被排序,但专辑将按随机顺序排列。
例如,如果表是:
-----------------
| track | album |
-----------------
| 1 | a |
| 2 | a |
| 3 | a |
| 1 | b |
| 2 | b |
| 1 | c |
| 2 | c |
-----------------
比可能的输出将是
-----------------
| track | album |
-----------------
| 1 | b |
| 2 | b |
| 1 | c |
| 2 | c |
| 1 | a |
| 2 | a |
| 3 | a |
-----------------
可以通过单个 sqlite 查询完成吗?
最佳答案
首先你需要随机排列专辑,然后选择轨道。
with tt as (
select distinct album from t order by random()
)
select t.track, tt.album
from tt left join t on t.album = tt.album
order by tt.rowid, t.track
;
见 Sqlfiddle
关于sqlite按随机组排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30201026/