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

Oracle SQL如何关联第二张表并将其内容合并到第一张表的单个字段中?

Oracle SQL 多行详情合并为单个字段解决方案

针对你需要将DETAILS表的多行键值对合并到CUSTOMERS表单个字段、每个客户仅保留一行的需求,可以使用Oracle的LISTAGG函数实现字符串聚合。

最终查询语句

SELECT
    C.ID,
    C.NAME,
    LISTAGG(D.DETAIL || ': ' || D.VALUE, '  ') WITHIN GROUP (ORDER BY D.DETAIL) AS DETAILS
FROM
    CUSTOMERS C
LEFT JOIN DETAILS D ON C.ID = D.ID
GROUP BY
    C.ID,
    C.NAME

关键部分说明

  • LISTAGG函数:将分组内的字符串按指定分隔符拼接成单个字符串。这里先把DETAIL和VALUE拼接为键: 值格式,再用两个空格作为分隔符连接所有键值对。
  • WITHIN GROUP (ORDER BY D.DETAIL):可选配置,指定拼接时的排序规则,确保详情按固定顺序排列。不需要特定顺序可省略ORDER BY部分。
  • LEFT JOIN:替换原查询的JOIN,确保无对应DETAILS记录的客户也能保留在结果中,此时DETAILS字段为NULL。若仅需保留有详情的客户,仍可使用INNER JOIN。
  • GROUP BY:必须按CUSTOMERS.ID和CUSTOMERS.NAME分组,保证每个客户仅生成一行结果。

执行结果

该查询会输出你预期的格式:

IDNAMEDETAILS
5John SmithStreet: Elm St. Post_code: 12345 Number: 17
17Jane DoeTelephone: 09999999 Fax: 088888888888

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 06:02:43