select baseurl from tmp_page_tbl
where baseurl NOT IN ( select baseurl from page_lookup )
如何使用联接而不是嵌套来编写此查询。
这个想法是从 tmp tbl 获取在 page_lookup 表中不存在的 baseurl
select baseurl from tmp_page_tbl
where baseurl NOT IN ( select baseurl from page_lookup )
如何使用联接而不是嵌套来编写此查询。
这个想法是从 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 上建立了索引,那么 not exists 应该是最有效的。
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)。这在某些情况下非常有效。