私は、いくつかのJSON列を持つ非正規化テーブルを備えたmysql 5.7を持っています。配列列の行ごとに一意の値を抽出する必要があります。
例:["a", "b", "b", "a", "c"]
予想される出力は["a", "b", "c"];
SET @json = '["a", "b", "b", "a", "c"]';
このリストで一意の値を取得する必要があります。
["a", "b", "c"];
以下は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