Я новичок в 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
Есть ли способ сделать это в мариадбе? Заранее спасибо!
Внимание - JSON был разработан независимо между MySQL и MariaDB; вы найдете множество различий.
Информация: Здесь вы можете найти обзор различий в функциях MySQL и MariaDB: mariadb.com/kb/en/library/…






Вы можете использовать GROUP_CONCAT, я думаю, это даст вам то, что вы ищете.
SELECT column1, GROUP_CONCAT(column2) AS column2 FROM table GROUP BY column1
Создание агрегатная функция в 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 ;
И используйте это так:
SELECT column1, JSON_ARRAYAGG(column2) AS column2 FROM table GROUP BY column1;
будет работать.
Я считаю, что вы могли бы использовать функцию MariaDB
JSON_ARRAYи написать свою собственную агрегатную функцию, которая полагается на это, а затем использовать ее :-) mariadb.com/kb/en/library/stored-aggregate-functions