Filtrer un groupe dans mysql

J'ai les exemples de données suivants d'une 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 

Je souhaite extraire ces Id pour lesquels Dsc n'est ni 'Assuré' ni 'Courtier'. Puisque les deux colonnes ont des données répétitives, j'ai conçu la requête suivante pour cela.

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

Y a-t-il une autre façon de faire cela?

 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 

Vous pouvez écrire une requête en tant que:

 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

Utilisez la sous-requête pour le même:

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

Utilisez ce code pour arrêter la colonne répétée

 Select distinct *from table1