SQL-запрос: как выбрать тех, у кого авторизация ТОЛЬКО из приложения?
Есть таблица enter в которую пишутся все авторизации пользователей. Один из столбцов в ней enter_source, который записывается в 4 варианта (landing, web. ios, android).
Как выбрать только тех пользователей, у кого авторизация была с приложения, но с веба не было. При использовании NOT IN () AND IN () и JOIN исключить тех, у кого была все же авторизация и с веба не получается.
SELECT DISTINCT user_id
FROM enter t1
WHERE NOT EXISTS ( SELECT NULL
FROM enter t2
WHERE enter_source = 'web'
AND t1.user_id = t2.user_id )
AND EXISTS ( SELECT NULL
FROM enter t3
WHERE enter_source IN ('ios', 'android')
AND t1.user_id = t3.user_id );
Для правильного вопроса надо знать половину ответа
SELECT *
FROM `users`
WHERE `id` IN (
SELECT `user_id`
FROM `enter`
WHERE `enter_source` = 'ios' OR `enter_source` = 'android'
) AND `id` NOT IN (
SELECT `user_id`
FROM `enter`
WHERE `enter_source` = 'landing' OR `enter_source` = 'web'
)