Вложенный запрос SQL для получения всех строк столбцов, в которых не существует другого значения столбца

#mysql #sql #subquery

Вопрос:

У меня есть следующее Accounts_Users table :

 account_id | user_id
--------------------
1          | 60
2          | 60
3          | 60
1          | 50
3          | 50 
3          | 40 
 

И я хочу получить все, в user_id's которых нет строк с определенными account_id , например, если идентификатор учетной записи = 2, я хочу, чтобы результат был:

 user_id
-------
50 
40 


Since user_id = 60 have record with account = 2.
 

Как я могу это сделать с помощью подзапросов или любым другим способом?

Ответ №1:

Вы используете подзапрос:

 select distinct user_id
from Accounts_Users
where user_id not in (
  select user_id from Accounts_Users where account_id = 2
)
 

Комментарии:

1. Работает идеально, спасибо!

Ответ №2:

Способ подзапроса:

 select distinct user_id
from accounts_users
where user_id not in (
    select user_id
    from accounts_users
    where account_id = 2)
 

Присоединяйтесь:

 select distinct a.user_id
from accounts_users a
left join accounts_users b on b.user_id = a.user_id
    and b.account_id = 2
where b.user_id is null