我是mariadb的新手,我使用MySQL开发某些东西,切换到mariadb后不起作用,我发现的错误部分位于'JSON_ARRAYAGG',以前我使用JSON_ARRAYAGG将结果按组组合为数组如下
SELECT column1, JSON_ARRAYAGG(column2) AS column2 FROM table GROUP BY column1;
Run Code Online (Sandbox Code Playgroud)
转型
column1 column2 column1 column2
1 a 1 ['a','b']
1 b 2 ['cc','dd']
2 cc ---> 3 ['e']
2 dd
3 e
Run Code Online (Sandbox Code Playgroud)
mariadb中有办法吗?先感谢您!
GROUP_CONCAT您可以通过使用 括起括号来模拟它CONCAT。
SELECT column1, CONCAT('[', GROUP_CONCAT(column2), ']') AS column2 FROM table GROUP BY column1;
Run Code Online (Sandbox Code Playgroud)
小智 7
在MariaDB v10.3.3中创建聚合函数:
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 ;
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
SELECT column1, JSON_ARRAYAGG(column2) AS column2 FROM table GROUP BY column1;
Run Code Online (Sandbox Code Playgroud)
将工作。