2012-10-26 52 views
2
select baseurl from tmp_page_tbl 
where baseurl NOT IN (select baseurl from page_lookup) 

如何使用连接而不是嵌套它来编写此查询。SQL连接代替嵌套查询

的想法是得到TMP TBL不中page_lookup表中存在的BaseURL

回答

1
select baseurl 
from tmp_page_tbl t 
left outer join page_lookup p on t.baseurl = p.baseurl 
where p.baseurl IS NULL 
0

如果你没有选择大多数的表,你就page_lookup.baseUrl已经索引,那么不应该存在最有效率。

select baseurl from tmp_page_tbl tmp 
where not exists (select 1 from page_lookup WHERE baseurl = tmp.baseurl); 

在某些RDBMS(Oracle DB和Postgres)上,您可以使用MINUS(或PostgreSQL中的EXCEPT)。这在某些情况下非常有效。

+0

我同意你的观点,但有些人使用嵌套查询vs连接保留我只是试图找出最好的解决方案,因为查找表增长非常大 –