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

ネストする代わりに結合を使用してこのクエリを作成するにはどうすればよいですか。

アイデアは、page_lookupテーブルに存在しないtmptblからbaseurlsを取得することです。

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 に答える