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

如何编写SQL语句筛选关联全部指定Tag的MovieID

满足需求的SQL实现方案

方案1:GROUP BY + HAVING聚合筛选(通用高效,推荐使用)

SELECT MovieID
FROM 你的表名 -- 替换成实际的表名称
WHERE TagID IN (1,3,5)
GROUP BY MovieID
HAVING COUNT(DISTINCT TagID) = 3;

逻辑说明:

  • 先通过WHERE TagID IN (1,3,5)过滤出所有匹配三个目标标签中任意一个的记录
  • 按MovieID分组,统计每个电影对应的不同标签数量
  • 用HAVING筛选出匹配标签数正好等于3的电影,也就是同时包含1、3、5三个标签的结果

注意:如果你的表中同一个MovieID和TagID的组合不会重复,可以把COUNT(DISTINCT TagID)改成COUNT(*),执行性能会更好。

方案2:多次INNER JOIN实现(适合标签数量少的场景)

SELECT DISTINCT t1.MovieID
FROM 你的表名 t1
INNER JOIN 你的表名 t2 ON t1.MovieID = t2.MovieID AND t2.TagID = 3
INNER JOIN 你的表名 t3 ON t1.MovieID = t3.MovieID AND t3.TagID = 5
WHERE t1.TagID = 1;

逻辑说明:

  • 分别关联三次表,分别对应标签1、3、5的匹配条件,只有三个关联都命中的MovieID才会保留
  • 适合标签固定且数量少的场景,标签数量较多时性能会比聚合方案差

以上两种方案运行你的示例数据后,返回的结果都是1和3,完全符合预期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:18:00