Sql Postgres查询一个表中的所有结果与另一个表中的条件数据混合

Sql Postgres查询一个表中的所有结果与另一个表中的条件数据混合,sql,postgresql,Sql,Postgresql,我有两个SQL表,我正试图用这两个表中的数据生成一个新表。 作业表: jobs ( id SERIAL PRIMARY KEY, position TEXT NOT NULL, location TEXT NOT NULL, pay NUMERIC NOT NULL, duration TEXT NOT NULL, description TEXT NOT NULL, term TEXT NOT NULL, user_id INTEGER REFERENCES u

我有两个SQL表,我正试图用这两个表中的数据生成一个新表。
作业表:

jobs (
  id SERIAL PRIMARY KEY,
  position TEXT NOT NULL,
  location TEXT NOT NULL,
  pay NUMERIC NOT NULL,
  duration TEXT NOT NULL,
  description TEXT NOT NULL,
  term TEXT NOT NULL,
  user_id INTEGER REFERENCES users(id) ON DELETE SET NULL
)
应用表:

applied (
  id SERIAL PRIMARY KEY,
  completed BOOLEAN DEFAULT FALSE,
  user_id INTEGER REFERENCES users(id) ON DELETE SET NULL,
  job_id INTEGER REFERENCES jobs(id) ON DELETE SET NULL,
  UNIQUE (user_id, job_id)
); 
填充了数据的表格如下所示:
作业表

应用表

我希望我的最后一个查询是一个与jobs表匹配的表,但它有一个名为
js_id
的新列,根据用户是否申请了该作业,该列的值为true或false。我希望桌子看起来像这样:

下面是我用来生成上表的查询:

SELECT DISTINCT on (jobs.id) 
            jobs.*, applied.user_id as applicant,
           CASE WHEN applied.user_id = 1 THEN TRUE  
                ELSE FALSE END as js_id
        FROM jobs 
        JOIN applied on jobs.id = applied.job_id;
但是,这不起作用,因为我向表中添加了更多的申请人。我得到了不同的
true
false
值,但我无法让它工作。当我删除(jobs.id)上的
DISTINCT时,
我的真实值是一致的,但我最终得到的远不止我想要的3个作业。以下是在(jobs.id)上未显示
的结果:


我想你希望
存在

SELECT j.*,
       (exists (select 1
                from applied a
                where a.job_id = j.id and a.user_id = 1
       ) as js_id
FROM jobs j;

我想你想要
存在

SELECT j.*,
       (exists (select 1
                from applied a
                where a.job_id = j.id and a.user_id = 1
       ) as js_id
FROM jobs j;