You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中无共同列名的两表如何JOIN得到子女父母关系并按子女名排序

问题原因

你当前查询结果不符合预期的核心原因有两点:

  1. 仅关联了一次people表,所有字段取的都是匹配到的子女信息,没有单独关联查询父母对应的人员数据
  2. 代码存在笔误,关联条件中的表名relaions拼写错误,正确应为relations
正确SQL实现
SELECT 
    p_child.name AS child,
    MAX(CASE WHEN p_parent.gender = 'M' THEN p_parent.name END) AS father,
    MAX(CASE WHEN p_parent.gender = 'F' THEN p_parent.name END) AS mother
FROM relations r
INNER JOIN people p_child ON r.c_id = p_child.id
INNER JOIN people p_parent ON r.p_id = p_parent.id
GROUP BY p_child.id, p_child.name
ORDER BY p_child.name;
逻辑说明
  • 第一次关联people表(别名p_child),通过子女IDc_id匹配,拿到子女的姓名
  • 第二次关联people表(别名p_parent),通过父母IDp_id匹配,拿到对应父母的性别、姓名信息
  • 用CASE WHEN按性别区分父母,配合MAX聚合函数合并同一个子女的两条父母关联记录,提取出父亲、母亲对应的姓名
  • 最后按子女姓名排序,符合输出要求

如果需要保留仅登记了单亲信息的子女记录,可以将第二次INNER JOIN改为LEFT JOIN。

内容的提问来源于stack exchange,提问作者user weASD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:27:03