我有一个标准化表:
`Table: TheMovies`
id | MovieName
---------------------
1 | Zootopia
2 | Moana
3 | Toy Story
`Table: TheGenres`
id | GenreName
---------------------
21 | Action
22 | Animation
23 | Adventure
`Table: mMoviesGenres`
movieID | genreID
---------------------
1 | 21
1 | 23
2 | 22
2 | 21
3 | 23
3 | 21
一切正常,但我需要一个查询来显示相同类型的类似电影(在我们的例子中,我们需要 MovieID = 1 的类似电影,它应该输出 MovieID = 3 作为结果)。
您能否给我一个 SQL 查询,以便我有一个基本的想法,以便能够创建更高级的查询?
到目前为止,我的查询是:
SELECT
TheMovies.*
FROM
mMoviesGenres
JOIN TheMovies ON mMoviesGenres.movieID = TheMovies.id
WHERE
mMoviesGenres.genreID IN
(
SELECT
genreID
FROM
mMoviesGenres
WHERE
movieID = 1
)
** 在我看来,表格:TheMovies 不需要做我要求的事情
尝试这个查询:
SELECT m2.movieId
FROM mMoviesGenres m1
INNER JOIN mMoviesGenres m2
ON m1.genreID = m2.genreID
WHERE m1.movieId = 1 AND
m2.movieId <> 1
GROUP BY m2.movieId
HAVING COUNT(*) = (SELECT COUNT(*) FROM mMoviesGenres WHERE movieId = 1)
Update:
如果您想查找至少两种类型相似的电影,请使用此HAVING
clause:
HAVING COUNT(*) >= 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)