SELECT * FROM table1 WHERE EXISTS (SELECT * FROM table2 WHERE *condition*)

Puis-je vérifier s'il y a, par exemple, 3 lignes respectant la condition table2? Donc quelque chose comme

[...]WHERE EXISTS 3 (SELECT[...]

Merci

0
doe j 21 avril 2017 à 14:58

3 réponses

Meilleure réponse

Selon votre question à la réponse de Gordon, vous souhaitez sélectionner des enregistrements dont l'ID apparaît trois fois en tant qu'ID associé. Sélectionnez donc tous les AssociatedIDs qui se produisent trois fois, puis sélectionnez tous les enregistrements avec un ID n dans cet ensemble de données.

select *
from mytable 
where id in (select associatedid from mytable group by associatedid having count(*) = 3);
0
Thorsten Kettner 21 avril 2017 à 12:41

Vous pouvez simplement compter:

SELECT * FROM table1 WHERE (SELECT COUNT(*) FROM table2 WHERE *condition*) = 3;
0
Thorsten Kettner 21 avril 2017 à 12:34

Vous feriez cela avec autre chose que exists. Par exemple, agrégez table2 et comptez les lignes:

SELECT *
FROM table1 t1 JOIN
     (SELECT t2.??
      FROM table2 t2
      WHERE conditions (no correlation conditions)
      GROUP BY t2.??
      HAVING COUNT(*) >= 3
     ) t2
     ON t1.?? = t2.??;
2
Gordon Linoff 21 avril 2017 à 12:00