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

如何使用SELECT语句拆分数据表行,能否实现指定查询结果?

实现需求的SQL方案

可以实现这个需求,核心是将同一name对应的多个value进行字符串拼接,不同数据库的实现语法略有差异,以下是主流数据库的解决方案:

1. MySQL(5.7+)

使用GROUP_CONCAT()函数实现分组拼接:

SELECT 
    name,
    GROUP_CONCAT(value SEPARATOR ', ') AS values
FROM your_table
GROUP BY name;

如果需要去重或排序,可添加参数调整,例如GROUP_CONCAT(DISTINCT value ORDER BY value SEPARATOR ', ')。

2. PostgreSQL

使用STRING_AGG()函数:

SELECT 
    name,
    STRING_AGG(value::TEXT, ', ') AS values
FROM your_table
GROUP BY name;

若value为数值类型,需转为文本格式;支持排序:STRING_AGG(value::TEXT, ', ' ORDER BY value)。

3. SQL Server(2017+)

使用STRING_AGG()函数:

SELECT 
    name,
    STRING_AGG(value, ', ') AS values
FROM your_table
GROUP BY name;

旧版本SQL Server可通过FOR XML PATH实现:

SELECT 
    DISTINCT name,
    STUFF(
        (SELECT ', ' + CAST(value AS VARCHAR) 
         FROM your_table t2 
         WHERE t2.name = t1.name 
         FOR XML PATH('')),
        1, 2, ''
    ) AS values
FROM your_table t1;

4. Oracle

使用LISTAGG()函数:

SELECT 
    name,
    LISTAGG(value, ', ') WITHIN GROUP (ORDER BY value) AS values
FROM your_table
GROUP BY name;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:45:35