mysql SQL QUERY -提供一个学生/家长列表,列出孩子的名字,家长的名字1,家长的名字2,如果孩子没有家长,只显示null

hrysbysz  于 12个月前  发布在  Mysql
关注(0)|答案(2)|浏览(140)

我正在处理一个类的SQL问题-“提供一个学生/家长列表。删除孩子的名字,家长名字1,家长名字2。如果孩子没有家长,就显示null。”
预期结果应该如下所示
x1c 0d1x的数据
然而,我一直无法得到返回“NULL”值的结果,我只能得到没有空值的返回行



利用这个代码

SELECT child.name AS Child, parent1.name AS Parent1, parent2.name AS Parent2
FROM Person child 
JOIN Person parent1 ON child.parentID1 = parent1.personID 
JOIN Person parent2 ON child.parentID2 = parent2.personID 
ORDER BY child.name;

字符串
如果您能提供任何有关如何修改SQL以包含空值的帮助,我们将不胜感激

vojdkbi0

vojdkbi01#

您可以为每个父节点使用LEFT JOIN,这将确保即使子节点没有父节点,它们仍然会包含在结果中,并具有“NULL”值。
enter image description here
修改后的查询应该是这样的:

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;

字符串
类似的SQL查询模板:

SELECT
    s.child_name,
    p1.parent_name AS parent_name_1,
    p2.parent_name AS parent_name_2
FROM
    Students AS s
LEFT JOIN
    Parents AS p1 ON s.child_id = p1.child_id AND p1.parent_number = 1
LEFT JOIN
    Parents AS p2 ON s.child_id = p2.child_id AND p2.parent_number = 2;


阅读更多关于LEFT JOIN

vaj7vani

vaj7vani2#

您正在使用JOIN,它是INNER JOIN的缩写形式(JOIN = INNER JOIN). INNER JOIN只是匹配两个表共有字段中的值,它不会返回空值(如果没有父ID,则不会返回NULL)。因此,在这种情况下,我们需要使用LEFT JOIN。它将保留查尔兹的所有记录,如果没有现有的父ID,则返回父列的null值。希望它有助于

相关问题