mysql 使用不带连接的子查询

标签 mysql join subquery

这是相关表格

movie(id, title, relYear, category, runTime, director,
studioName, description, rating)

actor(aID, fName, surname, gender)

stars(movieID, actorID)

movGenre(movieID, genre) 

我只是想使用子查询返回“Michael Fassbender”主演的电影...电影中的“id”指的是电影 ID 而不是 Actor ID(如果是这种情况)我可以做

SELECT title, category
FROM movie 
WHERE 'id' =(SELECT 'aID'
             FROM actor
             WHERE fName='Michael' and surname='Fassbender')

有没有办法在不使用任何连接的情况下做到这一点?

最佳答案

您可以使用Correlated SubqueryExists()

SELECT m.title, m.category
FROM movie AS m
WHERE EXISTS (SELECT 1
              FROM stars AS s 
              JOIN actor AS a ON a.aID = s.actorID
              WHERE a.fName = 'Michael' AND 
                    a.surname = 'Fassbender' AND
                    s.movieID = m.id)
<小时/>

上述解决方案仍然以某种方式利用JOIN(在子查询内)。完全不使用 Join 的解决方案可以是:

SELECT title, category
FROM movie
WHERE id IN (SELECT movieID 
             FROM stars 
             WHERE actorID IN (SELECT aID 
                               FROM actor 
                               WHERE fName = 'Michael' AND 
                                     surname = 'Fassbender'))

P.S.除非这是一些技巧分配/硬件,否则我强烈建议不要在现实应用程序中使用此查询。

关于mysql 使用不带连接的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53436011/

相关文章:

php - 如何使用连接获取相同值行的单独计数

python - 查询的值在 Jinja 中显示为元组,但应该是单个字符串

mysql - 我怎样才能加入这两个查询?

mysql - 一行有 2 个 ID,另一行有名字和姓氏。如何从其他表接收名字

mysql - SQL:泛化查询

sqlite - SELECT 语句中的条件子查询

php - 使用 mysqli 将 PHP 连接到 Google Cloud SQL 数据库时,用户名和密码使用什么?

mysql - 你的 SQL 语法有错误...在 'float)/CAST(rating_count AS float)) as average_rating from document' 附近

mysql - SQL查询问题-有六个表的困难查询

php - MySQL 一次更新两个不同的表(CRUD)