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

SQL Server一对多表字段拼接后更新主表字段的简便方法问询

SQL Server 实现跨表字段拼接更新方案

方案1:适用SQL Server 2017及更高版本

使用内置STRING_AGG函数实现拼接,语法更简洁高效:

UPDATE t1
SET t1.AddtionalTripLineInfo = t2.concat_content
FROM Table1 t1
INNER JOIN (
    SELECT 
        TripID,
        -- 可根据实际需求调整字段分隔符、条目分隔符
        STRING_AGG(CONCAT(SequenceNo, '|', Miles, '|', Cost, '|', Time), ';') AS concat_content
    FROM Table2
    GROUP BY TripID
) t2 ON t1.TripID = t2.TripID

如果字段存在NULL值,可以用ISNULL(字段名, '')包裹对应字段,避免NULL导致整段拼接结果为空。


方案2:兼容SQL Server 2008~2016版本

使用FOR XML PATH实现字符串拼接,适配低版本环境:

UPDATE t1
SET t1.AddtionalTripLineInfo = STUFF(
    (
        SELECT ';' + CONCAT(SequenceNo, '|', Miles, '|', Cost, '|', Time)
        FROM Table2 t2
        WHERE t2.TripID = t1.TripID
        ORDER BY SequenceNo -- 保证拼接顺序和条目序号一致
        FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)'),
    1, 1, '' -- 去掉开头多余的分隔符
)
FROM Table1 t1
WHERE EXISTS (
    SELECT 1 FROM Table2 t2 WHERE t2.TripID = t1.TripID
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:09:03