我爲我的生活不能看到我在這裏失蹤,但能有人指出我爲什麼第一個查詢不會做我想做的,但第二個工作正常?我知道查詢不完全一樣,但它們應該返回相同的20行,但它們不會。 (查詢填充發現在一個表中的前20種最常見的物品)簡單如果已存在與在
select distinct
rx.drug_class
from rx
where exists
(
select top 20
rx2.drug_class
,COUNT(distinct rx2.pat_id) as counts
,RANK() over(order by count(distinct pat_id) desc) as rn
from rx as rx2
--when the line below is commented out
--this subquery gives the correct answer
where rx.drug_class = rx2.drug_class
group by rx2.drug_class
)
這一個正常工作
select distinct
rx.drug_class
from rx
where rx.drug_class in
(
select top 20 rx.drug_class
from rx
group by rx.drug_class
order by COUNT(distinct pat_id) desc
)
where子句中已存在子查詢不工作,怎麼辦?
你確定註釋掉了哪裏rx.drug_class = rx2.drug_class使它工作。刪除主查詢的鏈接將Exists子句轉換爲'EXISTS(SELECT * FROM rx)' – 2013-03-26 18:26:23