2
select baseurl from tmp_page_tbl 
where baseurl NOT IN ( select baseurl from page_lookup )

如何使用联接而不是嵌套来编写此查询。

这个想法是从 tmp tbl 获取在 page_lookup 表中不存在的 baseurl

4

3 回答 3

1
 select baseurl
 from tmp_page_tbl t 
 left outer join page_lookup p on t.baseurl = p.baseurl 
 where p.baseurl IS NULL
于 2012-10-26T17:36:36.857 回答
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

我不确定我会不会,除非你有令人信服的理由。以下是一些值得一看的链接:

于 2012-10-26T17:37:46.140 回答
0

如果您没有选择大部分表格并且您在 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)。这在某些情况下非常有效。

于 2012-10-26T17:51:05.177 回答