我有两个表,我想查询 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;
请注意,表顺序已切换。大多数时候,您会看到人们使用左连接而不是右连接。
- 1 回答
- 0 关注
- 143 浏览
添加回答
举报
0/150
提交
取消