web-dev-qa-db-fra.com

Comment obtenir des éléments uniques / distincts dans un tableau JSON dans MySQL 5.7

J'ai mysql 5.7 avec une table dénormalisée qui a quelques colonnes JSON. J'ai besoin d'extraire des valeurs uniques/distinctes par ligne pour une colonne de tableau.

Par exemple: ["a", "b", "b", "a", "c"] la sortie attendue doit être ["a", "b", "c"];

SET @json = '["a", "b", "b", "a", "c"]'; J'ai besoin d'obtenir des valeurs uniques dans cette liste.

["a", "b", "c"];

6
Anas Jaghoub

Les éléments suivants peuvent aider ceux qui utilisent MySQL 8

Vous pouvez utiliser une combinaison de JSON_TABLE, JSON_OBJECTAGG Et JSON_KEYS Pour le faire sans trop de problèmes. C'est dommage que nous ne puissions pas faire quelque chose comme JSON_ARRAYAGG(DISTINCT item).

Par exemple:

SET @json = '["a", "b", "b", "a", "c"]';

SELECT JSON_KEYS(JSON_OBJECTAGG(item, ""))
FROM JSON_TABLE(@json, '$[*]'
    COLUMNS(
        item TEXT PATH '$'
    )
) as items;

J'ai également créé un DBFiddle pour montrer mon travail: https://www.db-fiddle.com/f/6hgSEXPJWcm2CH8K16z6gQ/

JSON_TABLE https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html

Fonctions de recherche JSON: https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html

0
Gabriel Gates