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

LibreOffice Base SQL查询问题:合并同一父项的子项至同一行

LibreOffice Base 合并子表关联字段为逗号分隔字符串的解决方案

错误原因

你碰到的报错是因为HSQLDB(LibreOffice Base默认数据库引擎)要求:SELECT语句中所有非聚合函数的字段必须出现在GROUP BY子句里,之前的GROUP BY写法没有包含全部必要字段,导致引擎无法识别分组规则。

正确SQL查询语句

使用HSQLDB内置的GROUP_CONCAT聚合函数来合并子表的Child_Name,配合完整的GROUP BY字段列表即可解决问题:

SELECT 
    p.Parent_ID,
    p.Parent_Name,
    p.Parent_Contact,
    GROUP_CONCAT(c.Child_Name SEPARATOR ', ') AS Child_Names
FROM 
    "Parent" p
LEFT JOIN 
    "Child" c ON p.Parent_ID = c.Childs_parent
GROUP BY 
    p.Parent_ID, p.Parent_Name, p.Parent_Contact

关键说明

  • GROUP_CONCAT:HSQLDB专门用于合并分组内字符串的函数,SEPARATOR参数可自定义分隔符(这里用, 实现逗号加空格的格式)。
  • LEFT JOIN:保留所有父表记录,即使该父项没有对应的子项,此时Child_Names会显示为NULL;如果只需要显示有子项的父记录,替换为INNER JOIN即可。
  • GROUP BY规则:必须包含SELECT中所有未使用聚合函数的字段(即父表的三个字段),这是HSQLDB的硬性要求,也是解决你之前报错的核心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:42:48