在 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
我有以下来自 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