select baseurl from tmp_page_tbl
where baseurl NOT IN ( select baseurl from page_lookup )
如何使用连接而不是嵌套来编写此查询。
我们的想法是从tmp tbl获取basempls,这在base_lookup表中是不存在的
答案 0 :(得分:1)
select baseurl
from tmp_page_tbl t
left outer join page_lookup p on t.baseurl = p.baseurl
where p.baseurl IS NULL
答案 1 :(得分:1)
你可以使用如下的连接重写:
SELECT baseurl from tmp_page_tbl as t
LEFT JOIN page_lookup as pl
ON t.baseurl=pl.baseurl
where pl.baseurl IS NULL
除非你有令人信服的理由,否则我不确定我会不会这样做。以下是一些值得关注的链接:
答案 2 :(得分: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(或Postgres中的EXCEPT)。在某些情况下,这非常有效。