单条MySQL查询:跨表关联无匹配记录时列显示NULL
解决PROJECT与POST_PROJECT表关联查询需求
表结构与示例数据
- PROJECT表结构:
PID,HOSTNAME,STATUS - POST_PROJECT表结构:
PID,HOSTNAME,POST_STATUS
PROJECT表示例数据
PID | HOSTNAME | STATUS ----|----------|-------- 1 | HOST1 | SUCCESS 1 | HOST2 | FAIL
POST_PROJECT表示例数据
PID | HOSTNAME | POST_STATUS ----|----------|------------- 1 | HOST1 | FAIL
正确查询语句
要保留PROJECT表的所有记录,同时匹配POST_PROJECT中相同PID和HOSTNAME的条目,无匹配时对应列显示NULL,使用**左连接(LEFT JOIN)**即可实现:
SELECT p.PID, p.HOSTNAME, p.STATUS, pp.POST_STATUS FROM PROJECT p LEFT JOIN POST_PROJECT pp ON p.PID = pp.PID AND p.HOSTNAME = pp.HOSTNAME;
预期输出结果
PID | HOSTNAME | STATUS | POST_STATUS ----|----------|---------|------------- 1 | HOST1 | SUCCESS | FAIL 1 | HOST2 | FAIL | NULL
说明
LEFT JOIN会返回左表(PROJECT)的所有行,当右表(POST_PROJECT)中没有找到同时匹配PID和HOSTNAME的记录时,右表对应的列会自动填充为NULL,完全符合需求。
内容的提问来源于stack exchange,提问作者gjvignesh
相关产品推荐
相关产品推荐

