我们知道反连接是一种Join,我们试图获得不匹配的行。我面临以下问题:
查找所有没有评分的电影的标题。
我开发了以下SQL查询来满足:
select Movie.title
from Movie
where Movie.mID not in (select Rating.mID from Rating)
我之前遇到过反加入一词,我只想确认这确实是一个反连接。特别是这是一个正确的反连接。
答案 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