【问题标题】:Extract all JSON keys from MySQL从 MySQL 中提取所有 JSON 密钥
【发布时间】:2019-03-22 04:57:00
【问题描述】:

我有一个 JSON 列属性,例如:

{'a': 2, 'b': 5}
{'c': 3, 'a': 5}
{'d': 1, 'c': 7}
{'e': 1, 'f': 7}

如何从 MySQL 中获取所有不同的(顶级)键名?

像这样:

['a', 'b', 'c', 'd', 'e', 'f']

谢谢!

【问题讨论】:

  • 我的建议:要么在数据库中更好地格式化数据,要么切换到可以更有效地处理 json 列的 DBMS,例如 PostgreSQL(其中包括将多列旋转到单独的行中)。跨度>
  • 阅读:mysqltutorial.org/mysql-json 为您指明正确的方向。
  • @FrankerZ 这是一次性问题...

标签: mysql sql json


【解决方案1】:

从 JSON_KEYS 开始获取密钥。从那里你有一些选择,但可能最好的是 JSON_ARRAY。

【讨论】:

    【解决方案2】:

    嗯,不是最好的解决方案,但适用于 json 数据类型

    select distinct(json_extract(json_keys(*YOUR_VALUE*),'$[0]')) from *YOUR_TABLE*
    union
    select distinct(json_extract(json_keys(*YOUR_VALUE*),'$[1]')) from *YOUR_TABLE*
    

    【讨论】:

      【解决方案3】:

      test_tbl:

      +----+------------------+
      | id | json_col         |
      +----+------------------+
      |  2 | {"a": 2, "b": 5} |
      |  3 | {"c": 3, "a": 5} |
      |  4 | {"d": 1, "c": 7} |
      |  5 | {"e": 1, "f": 7} |
      +----+------------------+
      

      在 Mysql 8.0 中使用JSON_TABLE

      SELECT DISTINCT json_key FROM test_tbl,
          json_table(
              json_keys(json_col),
              '$[*]' COLUMNS(json_key JSON PATH '$')
          ) t;
      

      结果:

      +----------+
      | json_key |
      +----------+
      | a        |
      | b        |
      | c        |
      | d        |
      | e        |
      | f        |
      +----------+
      

      【讨论】:

        猜你喜欢
        • 2018-05-15
        • 1970-01-01
        • 2020-11-28
        • 1970-01-01
        • 1970-01-01
        • 2020-06-22
        • 2017-01-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多