将MySQL JSON列数组读取为行

时间:2018-12-19 15:27:15

标签: mysql sql arrays json mysql-json

我有一张桌子

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的第二个参数,因为我的列包含一个普通数组而不是对象数组。

1 个答案:

答案 0 :(得分:0)

如果您使用的是MySQL> = 8.0.4,则可以使用JSON_TABLE,否则,要实现所需的目标将变得不那么简单:

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

请参见db-fiddle