0
在我的研究中,我想通過列出所有與糖尿病共同發生的疾病,即至少有一名患有糖尿病和該疾病的病歷的患者,來查看與糖尿病相關的疾病。起初我試試這個查詢:爲什麼添加FROM子句可以解決主查詢中子查詢中WHERE條件的影響?
use [ng_data]
select distinct [disease]
from [dbo].[Final_View_2]
where [encode_id] in
(
select [encode_id]
where [disease] like '%diabetes%'
)
其中encode_id
是病人的id。但是這個查詢只返回名字中含有「糖尿病」的疾病。它看起來像子查詢中的條件影響主查詢的結果。
後來,當我嘗試此查詢:
use [ng_data]
select distinct [disease]
from [dbo].[Final_View_2]
where [encode_id] in
(
select [encode_id]
from [dbo].[Final_View_2]
where [disease] like '%diabetes%'
)
它工作正常。看來在子查詢中添加from
子句可以解決子查詢中where
子句對主查詢的影響。有人可以解釋查詢是如何進行的,以及爲什麼會產生這樣的結果?我對主查詢對子查詢的依賴感到困惑。