目标是列出特定类型的所有电影,例如' Adenture'。
我有两张桌子:
(1) movies
id
name
rank
year
PRIMARY
(2) movies_genre
genre
movie_id
我使用以下命令加入了它们:
mysql> SELECT * FROM movies LEFT JOIN movies_genres on movies.id = movies_genres.movie_id;
结果是这个(缩短):
| id | name | year | rank | movie_id | genre |
+--------+-------------+------+------+----------+-----------+
| 930905 | TestMovie | 2000 | 4 | 9309 | Music |
| 991327 | Get Swift | 2016 | 10 | 991327 | Adventure |
| 991326 | CommunityO | 2016 | 10 | 991326 | Comedy |
| 192017 | Lil Mermaid | 1989 | 7.3 | 192017 | Family |
| 192017 | Lil Mermaid | 1989 | 7.3 | 192017 | Animation |
那么如何列出说“冒险”
的电影注意:我是sql的新手,并且已经完成了一些艰难的练习。我花了很多时间在这上面,并且无处可去,这是我的最后一招。
谢谢。
答案 0 :(得分:2)
正如评论中所述,您正在寻找WHERE
声明。
SELECT * FROM movies
LEFT JOIN movies_genres
ON movies.id = movies_genres.movie_id
WHERE movies_genres.genre = "Adventure"
答案 1 :(得分:2)
尝试:您必须在genre
添加条件,如果您只需要从两个类型中选择那些类型为Adventure
的记录,那么我想建议INNER JOIN
代替LEFT JOIN
,但这取决于您的要求。检查以下解决方案:
SELECT *
FROM movies m
INNER JOIN movies_genres mg on m.id = mg.movie_id
AND mg.genre = 'Adventure'
如果您真的不希望column names
中的所有列而不是SELECT
*
SELECT m.id, m.name, mg.genre....
,以避免选择不必要的列