我想在mysql.But中为group_concat()函数使用separator。我想动态更改分隔符。我的意思是分隔符值来自一个表,并且对于每一行都是不同的。
我找不到任何解决方案,请帮助我。
答案 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的想法。