使用单个 SQL 连接语句从多个 MySQL 表添加条目,但前提是第二个表中有可用的条目



使用一个带有连接的 SQL 查询:如何仅在有相应的条目可用时才从第二个表添加条目?

project                                source
description   |  source                source_id   |  value
----------------------------           --------------------------------
Project 1     |  1                     1           |  Additional Info 1
Project 2     |  null                                 

当我打字时

select project.description, source.value
from project, source
where project.source = source.source_id
and project.description = "Project 1";

如愿以偿,我收到

Project 1   |   Additional Info 1 

但是,当我在最后一行中用Project 2替换Project 1时,我不会得到结果,因为project.source null。是否可以使用单个SQL查询来输出这样的内容?

Project 2   |   null 

我正在寻找涵盖这两种情况的查询。

有什么想法吗?

可以使用project表上的LEFT JOIN来确保所有项目都显示在结果集中,即使它们在source表中没有匹配的valueproject表中不匹配的项目将具有NULL用于其value

SELECT project.description AS description, source.value AS value
FROM project LEFT JOIN source
ON project.source = source.source_id

输出:

+--------------+--------------------+
| description  |       value        |
---------------+--------------------+
|  Project 1   |  Additional Info 1 |
|  Project 2   |  null              |
+--------------+--------------------+

尝试使用左连接....

SELECT project.description, source.value FROM project LEFT JOIN source ON project.source = source.source_id;

相关内容

最新更新