我的數據如下所示:相同的PolicyNumber
可以有不同的ClassCode
。因此,如何消除含有PolicyNumber
PACA1000101-00
如果選擇去爲NOT IN
如何通過不選擇子值,使所有父值從結果集中消失
所以至少一個ClassCode
所有行,如果我說我WHERE ClassCode <> 01183
希望所有這些記錄不會顯示在結果集中起來。
我的數據如下所示:相同的PolicyNumber
可以有不同的ClassCode
。因此,如何消除含有PolicyNumber
PACA1000101-00
如果選擇去爲NOT IN
如何通過不選擇子值,使所有父值從結果集中消失
所以至少一個ClassCode
所有行,如果我說我WHERE ClassCode <> 01183
希望所有這些記錄不會顯示在結果集中起來。
使用不存在與相關子查詢?
Select *
from table T1
where not exists (Select 1
from table T2
where T1.PolicyNumber = T2.PolicyNumber
and classCode = 01183)
另一種方式來做到這一點,如果你要加入到第二個表,不同的價值觀和你從該表需要的值....
SELECT T1.*, T2.*
FROM table T1
LEFT JOIN (Select *
from table T2
classCode = 01183)
on T1.PolicyNumber = T2.PolicyNumber
WHERE T2.PolicyNumber is null
這是說加入表本身,但只包括右邊有類別代碼爲01183的記錄。然後,where子句說排除所有保險號碼,其中至少有一次出現類別代碼01183.
雙重否定是令人不安的。所以你想要所有的記錄類碼是01183? (示例數據w /預期結果!) – xQbert
如果'PolicyNumber'具有ClassCode'01183',我希望'PolicyNumber'可以擁有''Policy'''和任何其他'ClassCodes'(它是'69183'和'01183')不見了 – Oleg
換句話說,如果一個policyNumber只有一個類代碼01183,那麼你想從結果中排除該policyNumber。這似乎是使用不存在或不存在的好時機。 (在更大的數據集上不存在更快) – xQbert