MySQL JSON_TABLE多个嵌套路径

时间:2019-09-19 15:09:51

标签: mysql sql json nested-queries

我有以下查询:

SELECT * FROM
    JSON_TABLE(
    '{"TrackingIds":[-1,-2],"Matrices":[22,23]}' 
    ,"$" COLUMNS(
        NESTED path "$.Matrices[*]" COLUMNS (Matrices INT path '$'),
        NESTED path "$.TrackingIds[*]" COLUMNS (TrackingId INT path '$')
    )) AS  j;

哪个产量:

Matrices    TrackingId
22             \N
23             \N
\N             -1
\N             -2

我将如何生成以下内容:

Matrices    TrackingId
22             -1
23             -2

几乎像是键值查找。 谢谢, -制革

1 个答案:

答案 0 :(得分:0)

这是设计使然。来自MySQL 8 manual

<块引用>

同级嵌套路径(即同一 COLUMNS 子句中的 NESTED [PATH] 的两个或多个实例)被一个接一个地处理,一次一个。当一个嵌套路径生成记录时,任何同级嵌套路径表达式的列都设置为 NULL。这意味着单个包含 COLUMNS 子句中的单个匹配项的记录总数是总和,而不是 NESTED [PATH] 修饰符生成的所有记录的乘积。

您需要一个外部查询来将相关行组合在一起,或者不使用 NESTED PATHs