【问题标题】:MySQL Query - join tables to show all values from one table and only matching results in other columnMySQL 查询 - 连接表以显示一个表中的所有值,并且仅在另一列中匹配结果
【发布时间】:2012-06-19 16:45:56
【问题描述】:

为糟糕的问题标题道歉。

我有两个表,jobs 和 Persons-Jobs。

职位表

1    Painting

2    Plumbing

3    Executive

4    CraneOperator

人员-工作表

JohnSmit   Painting

JohnSmit   CraneOperator

TomJones   Executive

BradPit    Plumbing

问题

我想运行一个返回两列的查询。第一列必须显示作业表中的所有记录。第二列必须显示从事这项工作的人的姓名。我想要一个只返回一个用户的结果的 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

任何帮助,我们将不胜感激。

感谢和问候, 污点

【问题讨论】:

    标签: mysql join


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2019-03-27
      相关资源
      最近更新 更多