Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uzyskać unikalne / odrębne elementy wewnątrz tablicy JSON w MySQL 5.7?

Nie ma bezpośredniej metody uzyskiwania odrębnych wartości z tablicy JSON w MySQL. Jedną z metod może być wykorzystanie koncepcji tabeli Sequence/Number Generator . Ta tabela sekwencji może być używana jako tabela pochodna (podzapytanie) lub możesz utworzyć stałą tabelę przechowującą liczby w twojej bazie danych.

Następnie użyjemy tej tabeli sekwencji do JSON_EXTRACT() wartości z tablicy w pierwszym kluczu, drugim kluczu, trzecim kluczu i tak dalej. Po wyodrębnieniu wartości w osobnym wierszu możemy po prostu użyć DISTINCT aby wydobyć z nich unikalne wartości. Następnie możemy użyć JSON_ARRAYAGG() funkcja do ponownego agregowania tych unikalnych wartości z powrotem w postaci tablicy JSON.

Schemat (MySQL v5.7)

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

Zapytanie

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;

Wynik

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

Wyświetl na DB Fiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wykryj emotikony w ciągu

  2. Wyodrębnij określone pola z pliku tekstowego

  3. Zainstaluj wiele instancji MySQL na serwerze Linux — użyj osobnego pliku konfiguracyjnego MySQL

  4. Jak zaokrąglić znacznik czasu w MySQL

  5. Usunąć duplikaty za pomocą tylko zapytania MySQL?