我有两个sql查询,然后之间需要相交。我知道mysql没有相交的操作数,那我该怎么办呢?尝试了一些我在网上找到的解决方案,但它们都返回了一些语法错误。查询是:
SELECT person_name FROM person NATURAL JOIN (
SELECT * FROM movie NATURAL JOIN role WHERE movie_name = 'Alien'
) alias1
SELECT person_name FROM person WHERE gender = 'f'
答案 0 :(得分:2)
您可以JOIN
一起使用所有三个表,并同时应用两个WHERE
子句。
这里是一个例子。它假设您的movie
表已连接到role
列上的movie_id
表,并且假设您在person_id
中有一个role
列和person
加入他们。您需要更改此查询以使用表使用的列。
SELECT
p.person_name
FROM
movie m
INNER JOIN role r
ON (m.movie_id=r.movie_id)
INNER JOIN person p
ON (r.person_id=p.person_id)
WHERE
m.movie_name='Alien'
AND p.gender='f'
编辑:我在这里使用INNER JOIN
,猜测要加入的列,而不是保留OP的NATURAL JOIN
。正如对OP的评论所提到的,最佳实践是显式标识联接,而不依赖于NATURAL JOIN
。