MySQL查询 - 连接表以显示一个表中的所有值,并仅匹配其他列中的结果

时间:2012-06-19 16:45:57

标签: mysql join

为糟糕的问题标题道歉。

我有两张桌子,工作和人员 - 工作。

职位表

1    Painting

2    Plumbing

3    Executive

4    CraneOperator

人员 - 工作表

JohnSmit   Painting

JohnSmit   CraneOperator

TomJones   Executive

BradPit    Plumbing

问题

我想运行一个返回两列的查询。第一列必须显示jobs表中的所有记录。第二列必须显示执行该作业的人员的姓名。我想要一个where子句,只返回一个用户的结果,在本例中为JohnSmit。作为示例,查询应输出:

    Painting   JohnSmit

    Plumbing   *NULL*

    Executive  *NULL*

CraneOperator  JohnSmit

我已经尝试过外连接,但是在Persons-Jobs表中有多个人的地方失败了。

select j.job,p.person 
from jobs j 
LEFT OUTER JOIN `Persons-Jobs` p on j.job = p.job
where p.person='JohnSmit' 
or p.person is NULL

任何帮助,一如既往地表示赞赏。

谢谢和问候, Smudger

1 个答案:

答案 0 :(得分:4)

您可以在join子句中对person进行限制。这样,在加入发生之前,其他人就会被过滤掉。

select j.job,p.person 
from   jobs j 
LEFT 
JOIN   `Persons-Jobs` p 
on     j.job = p.job 
and    p.person='JohnSmit'