要确认,这是一种反加入吗?

时间:2016-03-04 13:36:26

标签: sql join

我们知道反连接是一种Join,我们试图获得不匹配的行。我面临以下问题:

  

查找所有没有评分的电影的标题。

我开发了以下SQL查询来满足:

select Movie.title
from Movie
where Movie.mID not in (select Rating.mID from Rating)

我之前遇到过反加入一词,我只想确认这确实是一个反连接。特别是这是一个正确的反连接。

2 个答案:

答案 0 :(得分:0)

这种反连接并不是真正被接受为正确的,因为方法很慢且无效,因为你查询了两次。更快的方式和'官方'反加入将是:

SELECT
Movie.title
FROM Movie as t1
LEFT JOIN Rating as t2 ON t1.mID = t2.mID
WHERE t2.mID IS NULL

答案 1 :(得分:0)

您可以查看article

  

这非常缓慢且效率低下,因为RDBMS必须进行比较   每行都有一整个值表。以下是很多   更快,因为它匹配每一行一次,然后简单地消除   结果不在第二个表中:

SELECT
*
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.id
WHERE t2.id IS NULL