我已經寫了一個查詢來基於在主表中找到的條件篩選表,然後刪除與第三個表匹配的行。我在Access中執行查詢,所以我不能使用MINUS。它可以工作,但是我發現它爲一些但不是全部的選定記錄返回重複的行。我用DISTINCT修復了它,但我不知道它爲什麼會首先返回重複項。這是一個非常簡單的查詢:爲什麼這個SQL查詢需要DISTINCT?
select distinct sq.*
from
(select List_to_Check.*, Master_List.SELECTION_VAR
from List_to_Check
left join Master_List
on List_to_Check.SUB_ID = Master_List.SUB_ID
where Master_List.SELECTION_VAR = 'criteria'
) as sq
left join List_to_Exclude
on sq.SUB_ID = List_to_Exclude.SUB_ID
where List_to_Exclude.SUB_ID is null
;
編輯:所有三個表之間的關係在SUB_ID變量上是1對1。結合使用LEFT JOIN,我預計每個ID有一行。
很難說沒有你的表,數據和表之間的關係(從1到1,1到N等)的描述。 – sstan
如果沒有樣本表數據的話,很難說清楚。一般來說,不需要區分,並通過適當的「group by」語句解決。 – topshot
@sstan所有三個表之間的關係在SUB_ID var上都是1對1。這就是爲什麼我不希望重複。 – Rominus