在mysql中过滤一个组
Posted
技术标签:
【中文标题】在mysql中过滤一个组【英文标题】:Filter a group in mysql 【发布时间】:2015-07-06 06:14:46 【问题描述】:我有以下表格中的示例数据
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')
有没有其他方法可以做到这一点?
【问题讨论】:
你的数据库是什么? 这是一个 MSSQL 数据库。 【参考方案1】: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
【讨论】:
【参考方案2】:您可以将查询编写为:
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
【讨论】:
【参考方案3】:使用相同的子查询:
Select id,dsc from (select id,dsc from table1 group by id, dsc)
where dsc not in('Insured', 'Broker')
【讨论】:
【参考方案4】:使用此代码停止重复列
Select distinct *from table1
【讨论】:
以上是关于在mysql中过滤一个组的主要内容,如果未能解决你的问题,请参考以下文章