为了账号安全,请及时绑定邮箱和手机立即绑定

在 MySQL Query 中返回所有令人惊叹的、匹配的和无与伦比的

在 MySQL Query 中返回所有令人惊叹的、匹配的和无与伦比的

PHP
慕哥6287543 2021-07-15 14:08:19
我有两个表,我想查询 2 个表以获取报告。POSITION+-------------+---------------+| position_id | position_name |+-------------+---------------+|     1       |     E1P1      ||     2       |     E1P2      ||     3       |     E3P3      ||     4       |     E4P4      |+-------------+---------------+   PEOPLE+------------+-------------+--------------------+| people_id  | people_name | people_position_id |+------------+-------------+--------------------+|     1      |    JOHN     |         2          ||     2      |    MARK     |         4          |+------------+-------------+--------------------+询问SELECT position_id, position_name, people_name FROM positionRIGHT JOIN people ON people_position_id = position_id当我使用简单查询时,我只得到匹配的行,如何获取所有行?我想得到这个结果+----+----------+--------+| ID | POSITION | STATUS |+----+----------+--------+| 1  |   E1P1   | Empty  || 2  |   E1P2   | JOHN   || 3  |   E3P3   | Empty  || 4  |   E4P4   | MARK   |+----+----------+--------+
查看完整描述

1 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

我会在这里使用左连接:


SELECT

    po.position_id,

    po.position_name,

    COALESCE(pe.people_name, 'EMPTY') AS STATUS

FROM position po

LEFT JOIN people pe

    ON po.position_id = pe.people_position_id;

顺便说一下,您当前的右连接尝试失败的原因是您已将people表放在连接的右侧。这意味着不匹配的位置记录将被丢弃。这是我上面的答案,使用右连接重写:


SELECT

    po.position_id,

    po.position_name,

    COALESCE(pe.people_name, 'EMPTY') AS STATUS

FROM people pe

RIGHT JOIN position po

    ON po.position_id = pe.people_position_id;

请注意,表顺序已切换。大多数时候,您会看到人们使用左连接而不是右连接。


查看完整回答
反对 回复 2021-07-16
  • 1 回答
  • 0 关注
  • 143 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信