2012-10-26 107 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連接保留我只是試圖找出最好的解決方案,因爲查找表增長非常大 –