我想通过考试 SEPARATOR
a的价值 GROUP_CONTACT
但是,作为变量(或函数参数),此代码将失败
SET @sep = ' ';
SELECT
`group`,
GROUP_CONCAT( `field` ORDER BY `idx` SEPARATOR @sep ) `fields`
FROM `table`
GROUP BY `group`;
我知道我可以做一些像
SELECT
`group`,
SUBSTRING(
GROUP_CONCAT( CONCAT(`field`,@sep) ORDER BY `idx` SEPARATOR ''),
1,
LENGTH(
GROUP_CONCAT( CONCAT(`field`,@sep) ORDER BY `idx` SEPARATOR '')
)-LENGTH(@sep)
) `fields`
FROM `table`
GROUP BY `group`;
但最好有一个更简洁的语法。
编辑:
SELECT
`group`,
SUBSTRING(
GROUP_CONCAT( CONCAT(@sep,`field`) ORDER BY `idx` SEPARATOR ''),
LENGTH(@sep)+1
) `fields`
FROM `table`
GROUP BY `group`;
简单一点,但不够令人满意。
1条答案
按热度按时间blmhpbnm1#
你可以用事先准备好的陈述:
我在dbfiddle上创建了一个小演示:
准备好的语句的输出是: