问题描述如题,查了半天没搞明白原理,但找到报错原因了。
语法大致如下:
WITH table1 AS (SELECT id, json_array_col FROM some_table) SELECT * FROM table1, JSON_TABLE(json_array_col, "$[*]" COLUMNS(array_element CHAR(22) PATH "$")) t1;
报错1210 - Incorrect arguments to JSON_TABLE,
修复:
WITH table1 AS (SELECT id, json_array_col FROM some_table) SELECT * FROM table1 GROUP BY id, JSON_TABLE(json_array_col, "$[*]" COLUMNS(array_element CHAR(22) PATH "$")) t1;
差别只在group by,
SELECT id, json_array_col FROM some_table, JSON_TABLE(json_array_col, "$[*]" COLUMNS(array_element CHAR(22) PATH "$")) t1;
而此时,json_table在实体表时,不需要group by,并不会产生此错误,只在with语法与json_table合作使用时会产生如此报错。
先记下,有空再查下。
有知道底层原理的大佬可以指点迷津一二。
MySQL WITH与json_table联合使用产生报错1210 - Incorrect arguments to JSON_TABLE
于 2022-06-29 19:46:49 首次发布
本文讲述了在SQL查询中,使用WITH子句结合JSON_TABLE函数时遇到错误1210的问题,发现通过添加GROUP BY解决。重点在于理解WITH和GROUP BY对JSON_TABLE操作的影响,以及底层原理分析。
摘要由CSDN通过智能技术生成