You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server随机选曲:按歌手专辑各选1首生成播放列表

解决SQL随机选取每位歌手每张专辑1首曲目的问题

要实现每位歌手的每张专辑仅随机选1首曲目,且每次执行结果不同,可以用窗口函数结合随机排序的方案,这比单纯用ORDER BY NEWID()或DISTINCT更精准。

假设你的表中用于区分歌手和专辑的字段名为Artist和Album(如果实际字段名不同,替换成表中对应名称即可),以下是具体SQL查询:

SELECT MP3_ID, MP3_Path, Artist, Album
FROM (
    SELECT 
        MP3_ID, 
        MP3_Path, 
        Artist, 
        Album,
        -- 按歌手+专辑分组,组内随机排序并生成行号
        ROW_NUMBER() OVER (PARTITION BY Artist, Album ORDER BY NEWID()) AS RowNum
    FROM [dbo].[MP3Tracks]
) AS TrackGroups
-- 取每组的第一行(随机选中的那首)
WHERE RowNum = 1

代码说明:

  • PARTITION BY Artist, Album:将数据按歌手和专辑拆分成独立分组,确保每个分组对应一位歌手的一张专辑
  • ORDER BY NEWID():SQL Server中NEWID()会生成唯一随机GUID,每组内按这个值排序,每次执行都会得到不同的排序结果
  • ROW_NUMBER() = 1:筛选出每个分组的第一行,也就是该歌手该专辑下随机选中的曲目

如果需要查询更多字段(比如曲目名称、时长等),直接在子查询的SELECT列表中添加即可。

内容的提问来源于stack exchange,提问作者Paul1957

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 08:50:58