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

SQL多表行合并:将关联列值合并为CSV格式的问题求助

解决SQL合并ParentObjectType为CSV的问题

问题原因

你得到所有行结果相同的问题,根源是子查询没有添加与外层表的关联条件,导致子查询直接合并了Table2里所有的ParentObjectType,没有和Table1的当前行做匹配。

修正后的查询语句(SQL Server)

SELECT 
    t1.ObjectName,
    STUFF(
        (SELECT ',' + t2.ParentObjectType 
         FROM Table2 t2 
         WHERE t2.ChildObjectType = t1.ObjectName  -- 关键关联条件,确保只匹配当前ObjectName
         FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),
        1, 1, ''
    ) AS ParentObjectTypes
FROM Table1 t1
WHERE t1.Status = 'Active';

封装为存储过程

CREATE PROCEDURE GetParentObjectTypes
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        t1.ObjectName,
        STUFF(
            (SELECT ',' + t2.ParentObjectType 
             FROM Table2 t2 
             WHERE t2.ChildObjectType = t1.ObjectName
             FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),
            1, 1, ''
        ) AS ParentObjectTypes
    FROM Table1 t1
    WHERE t1.Status = 'Active';
END;

关键说明

  • WHERE t2.ChildObjectType = t1.ObjectName是核心:它让子查询只筛选出与当前行ObjectName对应的ParentObjectType,避免全局合并。
  • FOR XML PATH(''), TYPE配合.value():既实现字符串拼接,又能避免特殊字符被转义(比如&会被转成&的问题)。
  • STUFF(...,1,1,''):去掉拼接后字符串开头多余的逗号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:15:40