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

我有两个表,我想查询 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 position

RIGHT JOIN people ON people_position_id = position_id

当我使用简单查询时,我只得到匹配的行,如何获取所有行?


我想得到这个结果


+----+----------+--------+

| ID | POSITION | STATUS |

+----+----------+--------+

| 1  |   E1P1   | Empty  |

| 2  |   E1P2   | JOHN   |

| 3  |   E3P3   | Empty  |

| 4  |   E4P4   | MARK   |

+----+----------+--------+


慕哥6287543
浏览 144回答 1
1回答

素胚勾勒不出你

我会在这里使用左连接:SELECT    po.position_id,    po.position_name,    COALESCE(pe.people_name, 'EMPTY') AS STATUSFROM position poLEFT 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 STATUSFROM people peRIGHT JOIN position po    ON po.position_id = pe.people_position_id;请注意,表顺序已切换。大多数时候,您会看到人们使用左连接而不是右连接。
打开App,查看更多内容
随时随地看视频慕课网APP