在 mysql 中过滤一个组

Filter a group in mysql

我有以下来自 table

的示例数据
Id      Dsc
500001  INSURED
500001  THIRD PARTY
500001  THIRD PARTY
500001  THIRD PARTY
500002  INSURED
500002  THIRD PARTY
500003  INSURED
500004  BROKER
500005  CLAIMANT

我想提取那些 Dsc 既不是 'Insured' 也不是 'Broker' 的 ID。由于两列都有重复数据,我为此设计了以下查询..

Select Id from table1 where Dsc not in ('Insured', 'Broker')
Except
Select Id from table1 where Dsc in ('Insured', 'Broker')

有没有其他方法可以做到这一点?

使用此代码停止重复列

Select distinct *from table1 
SELECT id FROM table1 GROUP BY id 
HAVING SUM(CASE WHEN Dsc='Insured' THEN 1 ELSE 0 END)=0
AND SUM(CASE WHEN Dsc='Broker' THEN 1 ELSE 0 END)=0

同样使用子查询:

Select id,dsc from (select id,dsc from table1 group by id, dsc) 
where dsc not in('Insured', 'Broker')

您可以将查询写成:

SELECT Id FROM (
SELECT Id , SUM(CASE WHEN Dsc IN ('INSURED','BROKER') THEN 1 ELSE 0 END ) AS Condition
FROM @Test
GROUP BY Id
) T 
WHERE Condition = 0

DEMO