0
votes

Comment ne renvoie-t-il que des lignes avec des identifiants non dupliqués et une valeur correspondante sur une autre colonne?

J'ai une table où j'ai besoin de vérifier si plusieurs identifiants 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>.

Par exemple en utilisant ce tableau: p>

id|type
--------
13|trial
15|trial


1 commentaires

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.


3 Réponses :


0
votes

Je pense que vous ne voulez pas exister: xxx pré>

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;


2 commentaires

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 est venu de votre deuxième table dans la question. J'ai corrigé la réponse.



1
votes

sa peut être effectuée à l'aide de la requête interne xxx


0 commentaires

0
votes

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';


0 commentaires