select baseurl from tmp_page_tbl
where baseurl NOT IN (select baseurl from page_lookup)
如何使用连接而不是嵌套它来编写此查询。SQL连接代替嵌套查询
的想法是得到TMP TBL不中page_lookup表中存在的BaseURL
select baseurl from tmp_page_tbl
where baseurl NOT IN (select baseurl from page_lookup)
如何使用连接而不是嵌套它来编写此查询。SQL连接代替嵌套查询
的想法是得到TMP TBL不中page_lookup表中存在的BaseURL
select baseurl
from tmp_page_tbl t
left outer join page_lookup p on t.baseurl = p.baseurl
where p.baseurl IS NULL
你可以重写使用联接象下面这样:
SELECT baseurl from tmp_page_tbl as t
LEFT JOIN page_lookup as pl
ON t.baseurl=pl.baseurl
where pl.baseurl IS NULL
我不知道我虽然除非你有一个令人信服的理由。下面是几个环节值得看的:
如果你没有选择大多数的表,你就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)。这在某些情况下非常有效。
我同意你的观点,但有些人使用嵌套查询vs连接保留我只是试图找出最好的解决方案,因为查找表增长非常大 –