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

SQL中group_concat结合distinct时如何为每个值添加单引号包裹

MySQL中使用GROUP_CONCAT生成单引号包裹的去重ID列表

问题原因

之前的写法报错、输出不符合预期,核心是两个语法规则没注意:

  1. GROUP_CONCAT的语法要求DISTINCT关键字必须紧跟函数名,后面直接跟要聚合的字段/表达式,不能在DISTINCT前面插其他参数,所以group_concat(",",distinct(accountId) separator "' ,")会直接触发语法错误
  2. 只要写法顺序正确,CONCAT和DISTINCT配合不会导致去重失效,之前遇到去重失效基本是把CONCAT写在了DISTINCT外层,写反了顺序。

正确SQL代码

SELECT GROUP_CONCAT(
  DISTINCT CONCAT('''', accountId, '''')
  SEPARATOR ','
)
FROM xxx_yyy_replacement_instances
WHERE deletedAt IS NULL;

逻辑说明

  • MySQL的字符串中,连续两个单引号是转义符号,代表一个实际的单引号字符。CONCAT('''', accountId, '''')的作用就是给每个accountId值的前后各拼上一个单引号
  • DISTINCT直接作用在拼接了单引号的accountId结果上,因为单引号是固定的前后缀,和原始accountId一一对应,去重效果和直接对原始accountId去重完全一致
  • 分隔符直接设置为半角逗号,,执行后输出的结果就是你需要的格式,每个ID都被单引号包裹,ID之间用逗号分隔,没有多余的空格和错位的引号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:45:42