首页 > 解决方案 > 在查询完成之前,不会保存 SQL Server 中的字符串修改

问题描述

SELECT 
    pp.Product_ID, p.LabelEN, p.ID, pc.Comments, pc.lang 
INTO 
    #TEMPTBL
FROM
    #Product_Comments pc 
JOIN
    Product_Property vp ON pp.Product_ID=pc.Product_ID
JOIN 
    Product p ON p.ID = pp.Product_ID
JOIN 
    #prod pdom ON pdom.ID = p.ID
JOIN 
    Property p ON p.ID = pp.Property_ID
JOIN 
    IncludedPropertyCategory ipc ON p.ID = ipc.Property_ID
WHERE 
    pc.lang = 'EN' 

UPDATE pc
SET pc.Comments = p.LabelEN+', '+p.Comments
FROM
    (SELECT *
     FROM #TEMPTBL) AS p 
JOIN #Product_Comments AS pc ON p.Product_ID = pc.Product_ID AND p.lang = pc.lang

我有上面显示的这些查询,UPDATE并将每个功能(属性)附加到评论列;然而,问题是当一个产品有几个特性时,它只保存最后一个。例如,假设该产品具有以下特点:轻巧、电动、优质和新品,那么只有新品才会被前置。

我希望所有功能都添加到字符串中。

我得到类似的信息:“该产品具有新功能”。

当我想要:“轻量、电动、优质和新是这个产品的特点”。

标签: sql-server

解决方案


你试一下。

UPDATE pc
SET pc.Comments = p.NewComment
FROM (
    SELECT TMP1.Product_Id, TMP1.lang, STRING_AGG(NewCommentTmp, ',') AS NewComment
    FROM (
        SELECT *, p.LabelEN + ', ' + p.Comment AS NewCommentTmp
        FROM #TEMPTBL
    ) TMP1
) AS p
JOIN #Product_Comments AS pc ON p.Product_ID = pc.Product_ID AND p.lang = pc.lang;

推荐阅读