使用一个带有连接的 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
表中没有匹配的value
。 project
表中不匹配的项目将具有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;