#mysql #database
Вопрос:
UID,пользователь,организатор-это одни и те же данные.
Теперь я хочу извлечь данные из t1 таким образом, чтобы t1.uid=t2.user
, но t2.user!=t3.organizer
. Таким образом, мы можем сказать, что извлекаем данные из t1, если они присутствуют в t2, но если данные в t2 находятся в t3, то мы должны пропустить.
Я работал с несколькими запросами, не получая правильного ответа.
select distinct uid, name
from user,review
where (user.uid=review.user) join event
on review.user<>event.organizer;
select distinct uid,name
from user,review,event
where user.uid<>event.organizer and user.uid=review.user;
Ответ №1:
Вы можете использовать EXISTS
, чтобы проверить, есть ли совпадающая строка для каждого пользователя, review
и NOT EXISTS
убедиться, что в ней нет совпадающей строки event
:
SELECT u.uid, u.name
FROM user u
WHERE EXISTS (SELECT 1 FROM review r WHERE r.user = u.uid)
AND NOT EXISTS (SELECT 1 FROM event e WHERE e.organizer = u.uid);