【发布时间】:2018-11-29 18:17:38
【问题描述】:
我正在阅读 sqlzoo.net 的教程,我正在尝试围绕子查询和 JOIN 进行思考。在执行此操作时,我尝试使用JOIN 编写相同的代码一次,然后使用子查询编写一次。现在我想知道当有多个条件时是否可以使用子查询。
目前我正在处理问题 8 和问题 9 of this problem set;在我链接的网站顶部,您可以看到正在使用的表格。我设法得到#8(“列出'哈里森福特'出现的电影”)正确。
JOIN:
SELECT m.title
FROM movie m
JOIN casting c ON c.movieid = m.id
JOIN actor a ON a.id = c.actorid
WHERE a.name = 'Harrison Ford'
带有子查询:
SELECT title
FROM movie
WHERE id IN (SELECT movieid FROM casting
WHERE actorid IN (SELECT id FROM actor WHERE name = 'Harrison Ford'))
问题 9 同理,但增加了一个条件:电影不仅要由哈里森福特主演,而且他也不能是男主角。演员的名字存储在“演员”表中,主角/非主角信息在“演员表”中
所以对于JOIN,我只需通过AND 添加另一个条件:
SELECT title
FROM movie m
JOIN casting c ON c.movieid = m.id
JOIN actor a ON a.id = c.actorid
WHERE a.name = 'Harrison Ford' and c.ord != 1
我将如何处理子查询?
【问题讨论】: