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

标签 mysql join

为糟糕的问题标题道歉。

我有两个表,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

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

感谢和问候, 涂抹

最佳答案

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

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

关于MySQL 查询 - 连接表以显示一个表中的所有值,并且仅显示另一列中的匹配结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11105557/

相关文章:

使用简单包装器,Mysql 查询花费的时间多出 300 倍

java - Hibernate 可以使用 MySQL 的 "ON DUPLICATE KEY UPDATE"语法吗?

sql - 查询中的查询 : Is there a better way?

ruby-on-rails - ActiveRecord 表别名

bash - 连接目录中的所有文件

php - 使用 php 时出现 SQL 语法错误 echo $_SERVER ['PHP_SELF' ];

php - 如何替换我网站中的整个网址?

php - 表情符号显示为?在MySQL数据库中

mysql - 如何在 UPDATE 查询中执行三个表 JOIN?

sql-server - 在 SQL 中连接多个表并获取 Count 数据