如何使用MySQL select语句为JSON列表中的每个条目生成行?

时间:2016-07-21 16:49:20

标签: mysql json

我在MySQL表中有一个JSON列。

列包含字典列表。我希望列表中的每个项目都能获得自己的行,并带有行ID。请参阅下面的示例以便更好地理解。

示例:

mysql> select id, geography from region;
+------|-------------------------------------------------------------------------------------------------------------+
|  id  | geography                                                                                                   |
+------|-------------------------------------------------------------------------------------------------------------+
|  1   | [{"state": "SC", "county": "BERKELEY"}}]                                                                    |
|  2   | [{"county": "Placer", "state": "CA"}, {"county": "Sacramento", "state": "CA"}]                              |
|  3   | [{"county": "Jeff", "state": "MO"},{"county": "Charles", "state": "MO"},{"county": "Louis", "state": "MO"}] |
+------|-------------------------------------------------------------------------------------------------------------+

期望的输出:

+------|--------------|-------------+
| id   | county       |  state      |
+------|--------------|-------------|
| 1    | BERKELEY     |  SC         |
| 2    | Placer       |  CA         |
| 2    | Sacramento   |  CA         |
| 3    | Jeff         |  MO         |
| 3    | Charles      |  MO         |
| 3    | Louis        |  MO         |
+------|--------------|-------------+

1 个答案:

答案 0 :(得分:0)

这样做似乎是一个坏主意,但有时候我必须这样做。

我想到了3个选项:

  1. 如果您使用的是MySQL> = 5.7.8,请使用内部与JSON相关的功能
  2. 用于MySQL的JSON UDF
  3. 使用common_schema
  4. 你最好的投篮可能是第三选择。您应该查找common_schema.extract_json_value()。