基于其他表的SQL查询

2024-02-19

我有一个标准化表:

`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(使用前将#替换为@)

基于其他表的SQL查询 的相关文章

随机推荐