【问题标题】:Mysql Movie/Tags select queryMysql 电影/标签选择查询
【发布时间】:2016-04-06 04:50:10
【问题描述】:

所以,我有一个包含 3 个表和相关列的数据库:

  1. 标签:TID、标签名称
  2. 电影:MID,movie_title
  3. tags_to_movies : movie_ID, tag_ID

如何选择至少有我想要的标签的电影。

所以,如果我有一个带有标签 (1,2,3) 的电影 1 和带有 (1,4) 的电影 2,当我按 TID 1 选择时,我会得到电影 1 和电影 2,但是当我查询 TID (1 ,2) 我只得到movie1。

我已经在网上浏览了一下,但我认为我没有找到解决方案(或者没有足够努力)。

【问题讨论】:

  • 可能是因为您的 where 子句是并且 tid=1 和 tid=2 仅适用于电影 1。尝试 select movie_title from movies m, tags t, tags_to_movies c where m.mid = c.movi​​e_id和 c.tag_id in (我的选择列表 - 比如 "c.tag_id in (1, 2)")

标签: mysql


【解决方案1】:
select m.MID, m.movie_title
from movies m
join tags_to_movies tm on tm.movie_id = m.mid
join tags t on tm.tag_id = t.tid
where t.tid in (1,4)
group by m.MID, m.movie_title
having count(distinct t.tid) = 2

having count(distinct t.tid) = 2 取决于您拥有的标签数量。对于 3 个标签,请使用 having count(distinct t.tid) = 3

【讨论】:

  • 我在使用 GROUP BY 和 HAVING 时也略有不同,但这个效果很好。非常感谢。
猜你喜欢
  • 2014-02-10
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 2011-08-10
相关资源
最近更新 更多