如何将多行中的列合并为一个字符串

How to merge a column from multiple rows into a single string

我有一个有 2 行的 table 现在我想合并这些行并得到一个字符串。像这样 'santhosh,santhosh'

我检查了一些建议使用 COALESCE 的例子,试过这样

set @col = '';
SELECT @col = COALESCE(@col + ',', '') + name into @col
  FROM cricketers limit 20;
select @col;

但是我一直没有得到预期的结果,我应该怎么实现,我是运行这个里面的一个程序。我想使用变量@col 来做这样的查询

select * from table where id in (@col)

如果我没有遵循正确的流程,请提出建议。

  1. Coalesce 只允许用另一个值替换 NULL。它不能解决你的任务。
  2. +不连接字符串,它只是算术加法运算符。
  3. 如果您需要将很多行的值连接成单个值,那么您应该使用 GROUP BY(可能是隐式的)和 GROUP_CONCAT():
SELECT GROUP_CONCAT([DISTINCT] name [ORDER BY name])
FROM cricketers;

如果您不需要删除重复项,请删除 DISTINCT

如果您需要限制连接值的数量,那么您可以通过以下方式连接然后删除多余的值:

SELECT SUBSTRING_INDEX(GROUP_CONCAT([DISTINCT] name [ORDER BY name]), ',', 20)
FROM cricketers;

或select子查询中需要的行数:

SELECT GROUP_CONCAT(name [ORDER BY name])
FROM ( SELECT [DISTINCT] name
       FROM cricketers
       [ORDER BY name]
       LIMIT 20 ) subquery;
强烈建议存在

ORDER BY 表达式 - 如果没有它们,您将收到不确定的值排序(并且在数量限制的情况下 - 它们的 selection)。