我对mariadb是个新手,我是用MySQL开发的,在切换到mariadb后它不工作了,我发现的错误部分位于' JSON_ARRAYAGG ',在以前我使用JSON_ARRAYAGG将结果组合成如下所示的数组
SELECT column1, JSON_ARRAYAGG(column2) AS column2 FROM table GROUP BY column1;转型
column1 column2 column1 column2
1 a 1 ['a','b']
1 b 2 ['cc','dd']
2 cc ---> 3 ['e']
2 dd
3 e有没有办法在mariadb中做到这一点?提前谢谢你!
发布于 2018-06-08 14:24:39
在MariaDB v10.3.3中创建aggregate function:
DELIMITER //
DROP FUNCTION IF EXISTS JSON_ARRAYAGG//
CREATE AGGREGATE FUNCTION IF NOT EXISTS JSON_ARRAYAGG(next_value TEXT) RETURNS TEXT
BEGIN
DECLARE json TEXT DEFAULT '[""]';
DECLARE CONTINUE HANDLER FOR NOT FOUND RETURN json_remove(json, '$[0]');
LOOP
FETCH GROUP NEXT ROW;
SET json = json_array_append(json, '$', next_value);
END LOOP;
END //
DELIMITER ;并像这样使用它:
SELECT column1, JSON_ARRAYAGG(column2) AS column2 FROM table GROUP BY column1;都会起作用的。
发布于 2018-06-08 12:55:33
您可以通过使用CONCAT用括号包装GROUP_CONCAT来模拟它。
SELECT column1, CONCAT('[', GROUP_CONCAT(column2), ']') AS column2 FROM table GROUP BY column1;发布于 2018-06-08 05:31:29
你可以使用GROUP_CONCAT,我想这会让你得到你想要的东西。
SELECT column1, GROUP_CONCAT(column2) AS column2 FROM table GROUP BY column1https://stackoverflow.com/questions/50750379
复制相似问题