如何在MySQL中进行相交查询?

时间:2018-10-04 19:18:47

标签: mysql sql

我有两个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'

1 个答案:

答案 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