我有一张带有轨道和专辑列的歌曲表,我想以随机专辑顺序获取它们。即,在每张专辑中,歌曲将被排序,但专辑将按随机顺序排列。

例如,如果表是:

-----------------
| 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/

10-12 05:49