IN mysql函数group_concat动态更改分隔符

时间:2017-01-10 07:10:34

标签: mysql group-concat separator

我想在mysql.But中为group_concat()函数使用separator。我想动态更改分隔符。我的意思是分隔符值来自一个表,并且对于每一行都是不同的。

我找不到任何解决方案,请帮助我。

1 个答案:

答案 0 :(得分:1)

终于有了灵魂。

假设我们有一些MySQL例程。我们需要GROUP_CONCAT使用特殊SEPARATOR的某些值(默认为',')。但SEPARATOR不是静态的,而是来自另一个表,例如。来自一些“设置”表。

DECLARE url_delimiter VARCHAR(255);

SELECT catalog_url_delimiter
INTO url_delimiter
FROM settings;

我们不能直接使用变量作为SEPARATOR参数:

-- doesn't work
SELECT GROUP_CONCAT(`some_table`.id SEPARATOR url_delimiter)
FROM <some query>

但我们可以使用一些虚拟分隔符并将其替换为有效,如下所示:

SELECT 
  REPLACE(
    GROUP_CONCAT(`some_table`.id SEPARATOR 'some-tricky-dummy-separator'), 
    'some-tricky-dummy-separator', 
    url_delimiter
  )
FROM <some query>

感谢@SaritaTewari的想法。