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

如何用SQL筛选出同时包含两位指定艺人的歌曲ID

修正SQL获取同时关联两个艺人的歌曲ID

原SQL的WHERE子句逻辑有误,ARTIST_ID = '5000' and '5001'里的and '5001'会被SQL当作布尔值判断(非空字符串默认视为真),实际只会筛选出关联艺人5000的歌曲,完全无法实现“同时关联两个艺人”的需求。

下面提供两种可行的修正方案:

方案一:分组统计筛选

先筛选出关联目标艺人的记录,再按歌曲ID分组,统计每个歌曲关联的不同艺人数量,只保留数量为2的歌曲:

SELECT SONG_ID
FROM SONG_ARTIST
WHERE ARTIST_ID IN ('5000', '5001')
GROUP BY SONG_ID
HAVING COUNT(DISTINCT ARTIST_ID) = 2;

如果你的表中不会出现同一歌曲重复关联同一艺人的情况,可以去掉DISTINCT,直接用COUNT(ARTIST_ID) = 2。

方案二:自连接匹配

将表与自身连接,匹配同一个歌曲ID下分别关联两个艺人的记录:

SELECT sa1.SONG_ID
FROM SONG_ARTIST sa1
JOIN SONG_ARTIST sa2 ON sa1.SONG_ID = sa2.SONG_ID
WHERE sa1.ARTIST_ID = '5000'
  AND sa2.ARTIST_ID = '5001';

这种方法通过关联两条记录,确保同一个歌曲同时存在两个艺人的关联信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:20:27