mysql>  SELECT * ->  FROM -> JSON_TABLE( -> ’[{"a": 1, "b": [11,111]}, {"a": 2, "b": [22,222]}]’, -> ’$[*]’ COLUMNS( -> a INT PATH ’$.a’, -> NESTED PATH ’$.b[*]’ COLUMNS (b1 INT PATH ’$’), -> NESTED PATH ’$.b[*]’ COLUMNS (b2 INT PATH ’$’) -> ) ->  ) AS jt; +------+------+------+ | a | b1 | b2 | +------+------+------+ | 1 | 11 | NULL | | 1 | 111 | NULL | | 1 | NULL | 11 | | 1 | NULL | 111 | | 2 | 22 | NULL | | 2 | 222 | NULL | | 2 | NULL | 22 | | 2 | NULL | 222 | +------+------+------+ mysql>  SELECT * ->  FROM -> JSON_TABLE( -> ’[{"a": "a_val", ’> "b": [{"c": "c_val", "l": [1,2]}]}, ’> {"a": "a_val", ’> "b": [{"c": "c_val","l": [11]}, {"c": "c_val", "l": [22]}]}]’, -> ’$[*]’ COLUMNS( -> top_ord FOR ORDINALITY, -> apath VARCHAR(10) PATH ’$.a’, -> NESTED PATH ’$.b[*]’ COLUMNS ( -> bpath VARCHAR(10) PATH ’$.c’, -> ord FOR ORDINALITY, -> NESTED PATH ’$.l[*]’ COLUMNS (lpath varchar(10) PATH ’$’) -> ) -> ) ->  ) as jt; +---------+---------+---------+------+-------+ | top_ord | apath | bpath | ord | lpath | +---------+---------+---------+------+-------+ | 1 | a_val | c_val | 1 | 1 | | 1 | a_val | c_val | 1 | 2 | | 2 | a_val | c_val | 1 | 11 | | 2 | a_val | c_val | 2 | 22 | A  FOR ORDINALITY  column enumerates records produced by the  COLUMNS  clause, and can be used to distinguish parent records of a nested path, especially if values in parent records are the same, as can be seen here: Sibling nested paths—that is, two or more instances of  NESTED [PATH]  in the same  COLUMNS  clause —are processed one after another, one at a time. While one nested path is producing records, columns of any sibling nested path expressions are set to  NULL . This means that the total number of records for a single match within a single containing  COLUMNS  clause is the sum and not the product of all records produced by  NESTED [PATH]  modifiers, as shown here: +------+------+ JSON Table Functions 2380