,你可以使用子查詢負擔得起,這是可讀的方式:「有沒有有其他類型的活動,到第二類活動的所有職責」:
select distinct columns
from duties d
join activity a2 on d.duty_id = a2.id
join activity_type t2 on t2.id = a2.act_id and activity_type = 'TYPE2'
where d.duty_id not in
(select duty_id.id from duties d
join activity a on d.duty_id = a.id
join activity_type t on t.id = a.act_id and activity_type <> 'TYPE2'
)
注意比這種查詢有性能不高由於每個主查詢行都執行了子查詢。
如果沒有標準的SQL子查詢:
select columns
from
(
select columns (including duty_id)
from duties d
join activity a on d.duty_id = a.id
join activity_type t on t.id = a.act_id and activity_type = 'TYPE2'
) as yesT2
left outer join
(
select distinct d.duty_id
from duties d
join activity a on d.duty_id = a.id
join activity_type t on t.id = a.act_id and activity_type <> 'TYPE2'
) as yesT1
on
yesT2.duty_id = yesT1.duty_id
where
yesT1.duty_id is Null
可能在可讀性IY我們的數據庫品牌來提高支持CTE。
請檢查答案的任何活動。如果一個答案足夠了,請不要忘記通過選中答案旁邊的複選標記將您的問題標記爲答案。 –