如何将SQL查询结果的每个元素后加分号并拼接为字符串
实现查询结果的分号分隔字符串拼接
根据你当前的查询需求,要将去重后的country字段按升序拼接成;分隔的字符串,不同数据库的实现方式略有差异,以下是主流数据库的解决方案:
MySQL/MariaDB
使用GROUP_CONCAT聚合函数,直接支持去重、排序和指定分隔符:
SELECT GROUP_CONCAT(DISTINCT country ORDER BY country ASC SEPARATOR ';') AS country_list FROM diary;
PostgreSQL
使用STRING_AGG函数,语法简洁,支持直接结合去重和排序逻辑:
SELECT STRING_AGG(DISTINCT country, ';' ORDER BY country ASC) AS country_list FROM diary;
SQL Server(2017及以上版本)
STRING_AGG不支持直接在函数内使用DISTINCT,需先通过子查询完成去重,再执行拼接:
SELECT STRING_AGG(country, ';') WITHIN GROUP (ORDER BY country ASC) AS country_list FROM ( SELECT DISTINCT country FROM diary ) AS distinct_countries;
Oracle
使用LISTAGG函数,同样需要先通过子查询去重,再进行字符串拼接:
SELECT LISTAGG(country, ';') WITHIN GROUP (ORDER BY country ASC) AS country_list FROM ( SELECT DISTINCT country FROM diary );
内容的提问来源于stack exchange,提问作者user22884804
相关产品推荐
相关产品推荐

