如何随机排序 SELECT 结果,但在 "groups" 中(不分组)
How to sort SELECT results randomly, but in "groups" (NOT grouped by)
我有一个 SQLITE 数据库,其中包含有关音乐文件的信息 - 即专辑、曲目列(以及更多,但为了简单起见,我将它们排除在外)。
[table SONGS]
ALBUM TRACK
A1 1
A1 2
A2 1
A2 2
A3 1
A3 2
A4 1
A4 2
我知道我可以做到 SELECT album, track FROM songs ORDER BY random()
,但我会像这样乱序处理相册:
ALBUM TRACK
A4 2
A3 2
A2 1
A1 1
A3 1
A1 2
A2 2
A4 1
我想随机排列顺序,但将相册放在一起,例如:
ALBUM TRACK
A3 1
A3 2
A2 1
A2 2
A1 1
A1 2
A4 1
A4 2
我该怎么做?我尝试了很多东西(还有 table 和 SELECT DISTINCT album FROM songs ORDER BY random()
),但其中 none 有效。
我知道我可以在代码中做到这一点(我正在用 XOJO 编写),但我想使用 SQLITE 来做到这一点...
我认为你只需要在随机之前按专辑顺序:
SELECT album, track FROM songs ORDER BY album, random()
最简单的方法是使用临时 table(如果您想长时间播放这些歌曲,您可能不想临时使用)。
INTEGER PRIMARY KEY 列自动填充自增值:
CREATE TEMPORARY TABLE AlbumOrder(Album, Sort INTEGER PRIMARY KEY);
INSERT INTO AlbumOrder(Album)
SELECT DISTINCT Album
FROM Songs
ORDER BY random();
SELECT Album, Track
FROM Songs
JOIN AlbumOrder USING (Album)
ORDER BY Sort, Track;
我有一个 SQLITE 数据库,其中包含有关音乐文件的信息 - 即专辑、曲目列(以及更多,但为了简单起见,我将它们排除在外)。
[table SONGS]
ALBUM TRACK
A1 1
A1 2
A2 1
A2 2
A3 1
A3 2
A4 1
A4 2
我知道我可以做到 SELECT album, track FROM songs ORDER BY random()
,但我会像这样乱序处理相册:
ALBUM TRACK
A4 2
A3 2
A2 1
A1 1
A3 1
A1 2
A2 2
A4 1
我想随机排列顺序,但将相册放在一起,例如:
ALBUM TRACK
A3 1
A3 2
A2 1
A2 2
A1 1
A1 2
A4 1
A4 2
我该怎么做?我尝试了很多东西(还有 table 和 SELECT DISTINCT album FROM songs ORDER BY random()
),但其中 none 有效。
我知道我可以在代码中做到这一点(我正在用 XOJO 编写),但我想使用 SQLITE 来做到这一点...
我认为你只需要在随机之前按专辑顺序:
SELECT album, track FROM songs ORDER BY album, random()
最简单的方法是使用临时 table(如果您想长时间播放这些歌曲,您可能不想临时使用)。 INTEGER PRIMARY KEY 列自动填充自增值:
CREATE TEMPORARY TABLE AlbumOrder(Album, Sort INTEGER PRIMARY KEY);
INSERT INTO AlbumOrder(Album)
SELECT DISTINCT Album
FROM Songs
ORDER BY random();
SELECT Album, Track
FROM Songs
JOIN AlbumOrder USING (Album)
ORDER BY Sort, Track;