Можно ли сделать этот запрос с объединением? - PullRequest
0 голосов
/ 09 октября 2019

Есть 2 таблицы: - Пользователь (id, псевдо) - Ссылка (id1, id2), эти 2 столбца FK для идентификатора пользователя

Я хочу выбрать всех пользователей, которые не имеют связи с идентификатором= 10. Это означает, что я хочу получить все идентификаторы пользователя, но только если ссылка (10, id2) не существует.

Я попытался с левым соединением, но результат не в порядке

select distinct *
from USER
left join LINK on USER.id = LINK.id1
where LINK.id1 != 10

1 Ответ

1 голос
/ 09 октября 2019

Существующий запрос представляется наиболее простым:

SELECT u.id, u.pseudo
FROM User u
WHERE NOT EXISTS (SELECT 1 FROM Link l
                  WHERE (l.id1 = u.id AND l.id2 = 10) OR (l.id2 = u.id AND l.id1 = 10));

На простом английском языке это означает сохранение каждой записи из таблицы User, так что между этим пользователем и * 1005 не существует никакой связи. *. Обратите внимание, что я проверяю обе стороны отношения в таблице Link, предполагая, что мы не знаем, на какую сторону может попасть какой-либо пользователь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...