Выбор значений, используемых всеми идентификаторами - PullRequest
1 голос
/ 18 апреля 2020

У меня есть таблица SQL, которая содержит UserID и AppID. Теперь мне нужен запрос на выборку, который выбирает все appid, которые используются всеми идентификаторами пользователя

Например:

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

В этом примере я хотел бы только AppID 35, потому что он используется всеми идентификаторами пользователей.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2020

Вы можете выполнить агрегацию:

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

Использовать distinct внутри count() в случае, если appid имеет повторяющийся ИД пользователя.

1 голос
/ 18 апреля 2020

... или вы можете использовать коррелированный подзапрос:

SELECT DISTINCT AppID
FROM sourcetable t1
WHERE NOT EXISTS ( SELECT NULL
                   FROM sourcetable t2
                   WHERE t1.AppID = t2.AppID
                     AND t1.UserID != t2.UserID )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...