用于从另一个表中的多个值中查找行的SQL查询构造


SQL query construction for finding rows from multiple values in another table

我有两个表:jobsapplications

jobs具有包括id(关键字)和user_id(创建行的用户的ID)的列。

applications具有包括job_id(应用程序所关联的作业的ID)的列。

我试图构建的查询将执行以下操作:

  1. 搜索jobs表中具有特定user_id的所有行
  2. applications表中搜索其job_id与上次搜索中返回的id相关的所有行

例如

jobs表格

id    user_id    ...>
1     1          ...
2     3          ...
3     1          ...

applications表格

id    job_id     ...>
1     3          ...
2     1          ...
3     2          ...

如果我运行user_id=1的查询,它应该返回applications表中的第1行和第2行,因为它们与user_id=1的作业相关。

如何才能做到这一点?

  select app.* from applications app, jobs j
  where j.id = app.job_id
  and j.user_id = '1'

使用联接。

您只需将这两个表连接起来,就可以用所有数据组成一个"更大的表"。您将在公共列中加入它们,在您的情况下,它的Id=job_Id。

查询将如下所示:

select a.* 
from applications a 
join jobs j on a.job_id = j.id  
where j.user_id = '1'