web-dev-qa-db-ja.com

MySQL 5.7のJSON配列内の一意の要素を取得する方法

私は、いくつかのJSON列を持つ非正規化テーブルを備えたmysql 5.7を持っています。配列列の行ごとに一意の値を抽出する必要があります。

例:["a", "b", "b", "a", "c"]予想される出力は["a", "b", "c"];

SET @json = '["a", "b", "b", "a", "c"]';このリストで一意の値を取得する必要があります。

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

6
Anas Jaghoub

以下はMySQL 8を使用しているユーザーに役立つ場合があります

_JSON_TABLE_、_JSON_OBJECTAGG_、および_JSON_KEYS_の組み合わせを使用して、あまり問題なく実行できます。 JSON_ARRAYAGG(DISTINCT item)のようなことができなかったのは残念です。

例えば:

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

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

私もDBFiddleを作成して自分の作業を示しました: https://www.db-fiddle.com/f/6hgSEXPJWcm2CH8K16z6gQ/

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

JSON検索関数: https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html

0
Gabriel Gates