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

如何编写SQL语句从relation和people两张表查询孩子、母亲、父亲对应数据

原有SQL问题分析

  • 字段名写错:relation表的父ID字段是pid不是p_id,关联条件不匹配
  • 逻辑错误:用SUM计数只能得到性别为男/女的人数,拿不到对应的人员姓名
  • 语法错误:CASE判断语句缺少END关键字闭合
  • 缺少孩子姓名的关联逻辑:没有将cid关联people表取孩子名称,所以无法输出Child字段

正确SQL语句

SELECT 
    -- 首字母大写适配输出要求,如果不需要可以直接写c.name AS Child
    CONCAT(UPPER(LEFT(c.name,1)), LOWER(SUBSTRING(c.name,2))) AS Child,
    MAX(CASE WHEN p.gender = 'F' THEN p.name END) AS Mother,
    MAX(CASE WHEN p.gender = 'M' THEN p.name END) AS Father
FROM relation r
-- 关联people表取孩子的姓名
INNER JOIN people c ON r.cid = c.id
-- 关联people表取对应pid下的父母信息
INNER JOIN people p ON r.pid = p.id
GROUP BY r.cid, c.name

逻辑说明

  • 先通过relation.cid = people.id关联拿到每个孩子的姓名
  • 再通过relation.pid = people.id关联拿到当前pid对应的两名父母记录
  • 用CASE语句按性别筛选母亲和父亲的姓名,用MAX聚合取出对应值
  • 按孩子ID和姓名分组,确保每个孩子对应一条输出记录

注:你给出的示例输出中第三行Lucky对应的Mother为Rohit、Father为Meena,和提供的people表中Rohit性别为M、Meena性别为F的设定冲突,如果是手误写反,上述SQL输出结果和预期一致;如果确实要按给出的示例输出,把CASE语句中性别和字段的对应关系调换即可。

内容的提问来源于stack exchange,提问作者Lonakshi Bhagat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:54:04