在mysql中过滤组

在mysql中过滤组,sql,sql-server,sql-except,Sql,Sql Server,Sql Except,我从一个表中得到了以下示例数据 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既不是“被保险人”也不是“经纪人”的ID。由于这两列都有重复的数据,我为此设计了以下查询 Select

我从一个表中得到了以下示例数据

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既不是“被保险人”也不是“经纪人”的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,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

您的数据库是什么?它是MSSQL数据库。
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