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連接保留我只是試圖找出最好的解決方案,因爲查找表增長非常大 –