将mysql json列数组读取为行

enxuqcxy  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(338)

我有一张table

X

 - id
 - name (eg: 'testing')
 - array_column_name (eg: ["value1","value2"])

我需要一个将返回以下输出的查询。

_____________________
| column1 | column2 |
| testing | value1  |
| testing | value2  |
|_________|_________|

实际上,我需要的是将数组转换为行。
我试过用

SELECT name, JSON_EXTRACT(@'array_column_name', '*') FROM X;

但我不知道该把什么作为 JSON_EXTRACT 因为我的列包含纯数组而不是对象数组。

aemubtdh

aemubtdh1#

如果您使用的是mysql>=8.0.4,那么您可以使用json\u table,否则,要实现您需要的功能就不那么简单了:

SELECT
  `X`.`name` `column1`,
  `der`.`column2`
FROM
  `X`,
  JSON_TABLE(
    `array_column_name`,
    '$[*]'
    COLUMNS(
      `column2` VARCHAR(255) PATH '$'
    )
  ) `der`;

见db小提琴。

相关问题