SQL查询问题:如何返回含NULL值的学生/家长列表
解决方法
把你的内连接(JOIN)改成左外连接(LEFT JOIN),就能保留所有学生记录,没有对应家长的位置会自动显示NULL。修改后的代码如下:
SELECT child.name AS Child, parent1.name AS Parent1, parent2.name AS Parent2 FROM Person child LEFT JOIN Person parent1 ON child.parentID1 = parent1.personID LEFT JOIN Person parent2 ON child.parentID2 = parent2.personID ORDER BY child.name;
原因说明
- 你原来用的
JOIN是内连接,它只返回两个表中完全匹配连接条件的行。如果某个学生的parentID1或parentID2是NULL,或者对应的personID在Person表中不存在,这行记录就会被过滤掉。 LEFT JOIN会保留左表(这里是学生对应的Person表)的所有行,当右表(家长对应的Person表)没有匹配的记录时,右表的字段就会填充NULL,正好符合你的需求。
内容的提问来源于stack exchange,提问作者CShep878
相关产品推荐
相关产品推荐

