我有以下聲明:如何使用一個SQL語句的輸出在另一
select region_id from regions
where region_name = 'Europe'
我需要這在下面的語句的輸出,其中「喇嘛」是:
select count(*) from countries
where region_id = 'bla'
我怎樣才能做到這一點?
我有以下聲明:如何使用一個SQL語句的輸出在另一
select region_id from regions
where region_name = 'Europe'
我需要這在下面的語句的輸出,其中「喇嘛」是:
select count(*) from countries
where region_id = 'bla'
我怎樣才能做到這一點?
select distinct * from countries
where region_id IN (select region_id from regions
where region_name = 'Europe')
使用EXISTS:
SELECT c.*
FROM COUNTRIES c
WHERE EXISTS (SELECT NULL
FROM REGIONS r
WHERE r.region_id = c.region_id
AND r.region_name = 'Europe')
我的選擇是使用EXISTS,而不是因爲:
IN
有1000個值的極限EXISTS
,您可以匹配多列如有必要EXISTS
回報在第一場比賽真正的,可以比在/ etc根據需要大多數錯誤EXISTS
爲相關子查詢更快,但它執行所不同&不評估SELECT
條款 - 您可以測試使用:
SELECT c.*
FROM COUNTRIES c
WHERE EXISTS (SELECT 1/0
FROM REGIONS r
WHERE r.region_id = c.region_id
AND r.region_name = 'Europe')
我不確定你喜歡'INISTS'而不是'IN'的理由是完全有效的。用'IN'限制1,000個值只有在與表達式列表比較而不是子查詢時,'IN'可以與多個列一起工作,儘管語法有點笨拙,'IN'和'EXISTS'會如果可能,通常使用相同的執行計劃 –
您對我們改變了查詢!它起始於'distinct *',現在是'count(*)',爲什麼所有的答案都不同步。 –