J'ai une table où j'ai besoin de vérifier si plusieurs identifiants Par exemple en utilisant ce tableau: p> code> existent avec différents types code> et renvoient le IDs code> qui ont seulement Un em> enregistrement et a essai code> dans la colonne code> code>. id|type
--------
13|trial
15|trial
3 Réponses :
Je pense que vous ne voulez pas exister: si vous voulez juste id code> s qui répond à cette condition, je suggère une agrégation: P> select t.*
from t
group by t.id
having sum( (t.type <> 'trial')::int ) = 0;
J'aime la simplicité de ceux-ci, mais ils ne semblent pas travailler, le second il n'y a pas de T2 ou de colonne nommée essai
@ staten12. . . Le nom de la colonne essai code> est venu de votre deuxième table dans la question. J'ai corrigé la réponse.
sa peut être effectuée à l'aide de la requête interne
Une autre alternative, en utilisant un rejoindre code>. La sous-requête limite les résultats aux valeurs code> ID code> uniques, alors le où code> clause supplémentaire des filtres supplémentaires qui descendent vers la valeur code> de type code> Intéressé par. select
t.id,
t.type
from
@table as t
JOIN
(
select
id
from @table
group by id
having count(*)=1
) as d
on d.id = t.id
where type = 'trial';
Non liée, mais: postgres 9.1 est N'a plus pris en charge , vous devez planifier une mise à niveau de la version actuelle. dès que possible.