如何使用左连接选择不在关系数据中

时间:2012-04-25 08:10:51

标签: mysql left-join

我知道这是一个模棱两可的主题,因为如果我知道究竟是什么名字,谷歌会给我答案。而且,对不起英语。

好的,我有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表。

提前致谢。

2 个答案:

答案 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
       )