You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取MariaDB整个JSON列中的所有唯一键?

提取MariaDB表中JSON列的所有唯一键

这个需求完全可以实现,以下是针对两种期望结果的具体解法:

测试数据准备

CREATE TABLE t (j LONGTEXT);

INSERT INTO t (j) VALUES ('{"a":"1"}');
INSERT INTO t (j) VALUES ('{"b":"2"}');
INSERT INTO t (j) VALUES ('{"c":"0", "d":"0"}');
INSERT INTO t (j) VALUES ('{"c":"1", "d":"1"}');

形式二(更优:每行一个唯一键)

利用JSON_TABLE将JSON_KEYS返回的数组拆分为单行记录,再通过DISTINCT去重:

SELECT DISTINCT key_name
FROM t,
     JSON_TABLE(
         JSON_KEYS(j),
         '$[*]' COLUMNS (key_name VARCHAR(255) PATH '$')
     ) AS keys_table;

执行结果:

+----------+
| key_name |
+----------+
| a        |
| b        |
| c        |
| d        |
+----------+

形式一(聚合为单个JSON数组)

在形式二的基础上,使用JSON_ARRAYAGG将去重后的键聚合为一个JSON数组:

SELECT JSON_ARRAYAGG(DISTINCT key_name) AS all_unique_keys
FROM t,
     JSON_TABLE(
         JSON_KEYS(j),
         '$[*]' COLUMNS (key_name VARCHAR(255) PATH '$')
     ) AS keys_table;

执行结果:

+----------------------+
| all_unique_keys      |
+----------------------+
| ["a", "b", "c", "d"] |
+----------------------+

注:以上方法要求MariaDB版本≥10.4,因为JSON_TABLE是从10.4版本开始引入的特性。

内容的提问来源于stack exchange,提问作者chris01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:33:15