Имея две таблицы, «пользователи» и «списки», а также таблицу «подписки» для многих из многих (таким образом, имея внешние ключи user_id
и list_id
), какой будет один запрос SQL, чтобы найти всех пользователей, у которых нет подписки с определенным list_id
(естественно, включая пользователей, у которых нет подписки вообще)?SQL-запрос для поиска пользователей, которые не имеют подписки на указанный список (многие-ко-многим)
1
A
ответ
2
Время вырваться not exists
снова:
select
u.user_id
from
users u
where
not exists (
select 1 from subscriptions s where s.user_id = u.user_id and s.list_id = N
)
+0
Работает отлично, спасибо! Никогда не слышал о существовании. – mxgrn
Я удалил свой ответ, так что этот вопрос должен появиться в списке без ответа. Надеюсь, кто-то, кто лучше понимает вашу проблему, даст вам лучший ответ. – Welbog
Вам должно быть ясно, что вы не хотите видеть пользователя, если у него есть ** любая ** задача с 'завершено = 1'. – Welbog
@Welbog: Большое спасибо, я переформулировал проблему, чтобы этот пример стал более практичным. – mxgrn