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

SQL Server中如何按COMMENT_ID顺序聚合USER_COMMENTS

按COMMENT_ID顺序聚合USER_COMMENTS的正确方法

核心解决方案

问题出在你使用STRING_AGG时未指定排序规则,数据库默认按非确定性顺序聚合。只需在STRING_AGG内部添加ORDER BY COMMENT_ID即可保证拼接顺序。

针对SQL Server的写法:

SELECT 
    ID,
    STRING_AGG(USER_COMMENTS, '') WITHIN GROUP (ORDER BY COMMENT_ID ASC) AS FULL_COMMENT
FROM TABLE_A
GROUP BY ID;

针对PostgreSQL 14+的写法:

SELECT 
    ID,
    STRING_AGG(USER_COMMENTS, '' ORDER BY COMMENT_ID ASC) AS FULL_COMMENT
FROM TABLE_A
GROUP BY ID;

为什么之前的写法会乱序

未指定ORDER BY时,数据库会根据数据存储位置、查询优化策略等随机顺序拼接USER_COMMENTS,无法保证和COMMENT_ID的顺序一致。

示例验证

假设你的原表数据如下:

COMMENT_IDIDUSER_COMMENTS
11你好,
21我是新手
31请教问题。
12这个功能
22怎么实现?

执行正确SQL后会得到期望输出:

IDFULL_COMMENT
1你好,我是新手请教问题。
2这个功能怎么实现?

你的表DDL参考

CREATE TABLE TABLE_A (
    COMMENT_ID INT,
    ID INT,
    USER_COMMENTS VARCHAR(255)
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 02:58:19