我有三个表,模式为t1[uid,name],t2[user,event],t3[eid,organizer]



UID,user,organizer是相同的数据

现在我想以这样的方式从t1检索数据,即t1.uid=t2.usert2.user!=t3.organizer。因此,我们可以说,如果t2中存在数据,则从t1中提取数据,但如果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;

您可以使用EXISTS检查reviewNOT 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);

相关内容

  • 没有找到相关文章

最新更新