我知道这是一个模棱两可的主题,因为如果我知道究竟是什么名字,谷歌会给我答案。而且,对不起英语。
好的,我有3张表,如下所示
job job_hide user
--- -------- ----
id job_id id
name user_id name
假设我们有3个作业,1,2和3作为id,2个用户test1,test2作为id,1个记录作为job_hide,2个作为job_id,test2作为user_id。
我的问题是,如果用户test2已记录,我想如何使用左连接,我想选择除id为2的作业以外的所有作业,因为id为2的作业已添加到job_hide表。
提前致谢。
答案 0 :(得分:0)
您可以为此目的简单地使用is null条件:
select job.* from job left join job_hide
on (job.id = job_hide.job_id and job_hide.user_id = 'test2')
where job_hide.job_id is null
答案 1 :(得分:0)
SELECT id, name
FROM job
WHERE id NOT IN
( SELECT job_id
FROM job_hide AS jh
WHERE jh.job_id = job.id
AND jh.user_id = 2 --- 2 is the @id_of_the_logged_user
)