2015-05-12 78 views
3

我有一張帶有曲目和專輯列的歌曲表,我希望以隨機專輯順序獲取它們。即,使得在每個專輯中歌曲將被分類,但專輯將以隨機順序。按隨機組分組的sqlite排序

例如,如果表是:

----------------- 
| 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的查詢做什麼?

回答

0

我不得不排序,以達到預期的訂單添加到MrSimpleMind的回答是:

WITH albums AS (SELECT DISTINCT album FROM songs ORDER BY RANDOM()) 
SELECT songs.* FROM albums 
LEFT JOIN songs 
ON songs.album = albums.album 
ORDER BY albums.rowid, songs.track 
+0

:)是的,看到我的回答:) – MrSimpleMind

3

首先,您需要隨機訂購專輯,然後選擇曲目。

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

+0

它不會在每張專輯 –

+0

我加入了該曲目進行分類因爲這是專輯rowid和曲目的簡單排序。祝你好運。我用新的sqlfiddle驗證,那是延遲http://sqlfiddle.com/#!5/0994c/1 – MrSimpleMind