Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So erhalten Sie eindeutige / eindeutige Elemente innerhalb des JSON-Arrays in MySQL 5.7

Es gibt keine direkte Methode, um eindeutige Werte aus einem JSON-Array in MySQL abzurufen. Eine Methode könnte darin bestehen, ein Sequenz-/Zahlengenerator-Tabellenkonzept zu verwenden . Diese Sequenztabelle könnte als abgeleitete Tabelle (Unterabfrage) verwendet werden, oder Sie können eine permanente Tabelle erstellen, in der Zahlen in Ihrer Datenbank gespeichert werden.

Wir werden diese Sequenztabelle dann verwenden, um JSON_EXTRACT() Werte aus dem Array beim ersten Schlüssel, zweiten Schlüssel, dritten Schlüssel und so weiter. Sobald wir die Werte in einer separaten Zeile extrahiert haben, können wir einfach DISTINCT verwenden um einzigartige Werte aus ihnen herauszuholen. Danach können wir JSON_ARRAYAGG() Funktion, um diese eindeutigen Werte wieder als JSON-Array zusammenzufassen.

Schema (MySQL v5.7)

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

Abfrage

SELECT Json_arrayagg(dt.val) AS unq_json_array
FROM   (SELECT DISTINCT Json_extract(@json, Concat('$[', seq.n, ']')) AS val
        FROM   (SELECT 0 AS n UNION ALL SELECT 1 UNION ALL
                SELECT 2 UNION ALL SELECT 3 UNION ALL 
                SELECT 4 UNION ALL SELECT 5 UNION ALL
                SELECT 6 UNION ALL SELECT 7 UNION ALL
                SELECT 8 UNION ALL SELECT 9) AS seq) AS dt
WHERE  dt.val IS NOT NULL;

Ergebnis

| unq_json_array  |
| --------------- |
| ["a", "b", "c"] |

Auf DB Fiddle ansehen