J'ai une table SQL qui contient UserID et AppID. Maintenant, j'ai besoin d'une requête de sélection qui sélectionne tous les appid utilisés par tous les userid

Par exemple:

UserID         AppID
1              35
1              42
2              35
2              42
3              35
3              77

Dans cet exemple, je ne voudrais que l'AppID 35 car il est utilisé par tous les ID utilisateur.

1
Naviton 18 avril 2020 à 14:31

2 réponses

Meilleure réponse

Vous pouvez faire une agrégation:

select appid
from table t
group by appid
having count(*) = (select count(distinct userid) from table);

Utilisez distinct dans count() au cas où appid aurait un ID utilisateur en double.

2
Yogesh Sharma 18 avril 2020 à 11:32

... ou vous pouvez utiliser une sous-requête corrélée:

SELECT DISTINCT AppID
FROM sourcetable t1
WHERE NOT EXISTS ( SELECT NULL
                   FROM sourcetable t2
                   WHERE t1.AppID = t2.AppID
                     AND t1.UserID != t2.UserID )
1
Akina 18 avril 2020 à 12:18