本文讲述了在SQL查询中,使用WITH子句结合JSON_TABLE函数时遇到错误1210的问题,发现通过添加GROUP BY解决。重点在于理解WITH和GROUP BY对JSON_TABLE操作的影响,以及底层原理分析。
摘要由CSDN通过智能技术生成
问题描述如题,查了半天没搞明白原理,但找到报错原因了。
语法大致如下:
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合作使用时会产生如此报错。
先记下,有空再查下。
有知道底层原理的大佬可以指点迷津一二。
一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟!
07-01
2. 优化 SQL 语句,制定执行计划;
3. 执行并返回结果;
如上,一条 SQL 直接是走流程处理,一次编译,单次运行,此类普通语句被称作 Immediate Statements (即时 SQL)。
2、预处理 SQL
但是,绝大多数情况下,某需求某一条 SQL 语句可能会被反复调用执行,或者每次执行的时候只有个别的值不同(比如 select
昨天在
使用
quartz的时候在开发环境一切正常,但是发布到测试机器上的时候却出现
Incor
rect
arguments
to
mysql
_stmt_
execute
错误,然后
mysql
服务不能正常访问。
后来查了半天发现是版本问题,本地是5.0.27,服务器是5.0.19这个小版本也会引起这么大的问题。
mysql
的java驱动是5.0.4.或许是驱动和服务器版本的综合原因。
没有深究,据说...
这个错误提示意味着在调用 `
JSON
_OBJECT` 函数时,传递给该函数的参数数量不正确。`
JSON
_OBJECT` 函数用于创建一个
JSON
对象,并将指定的键值对添加到该对象中。
该函数的语法为:
JSON
_OBJECT(key1, value1, key2, value2, ..., keyn, valuen)
其中,`key1`、`key2`、...、`keyn` 表示键名,`value1`、`value2`、...、`valuen` 表示键值。注意,键名和键值之间必须成对出现,且数量必须为偶数。
如果在调用 `
JSON
_OBJECT` 函数时出现 "
Incor
rect
parameter count in the call to native function '
JSON
_OBJECT'" 错误,可能有以下几种可能的原因:
1. 参数数量不正确:`
JSON
_OBJECT` 函数要求传递的参数数量必须为偶数,如果参数数量不正确,则会出现上述错误提示。请检查函数调用语句中传递的参数数量是否正确。
2.
MySQL
版本过低:`
JSON
_OBJECT` 函数是从
MySQL
5.7.8 版本开始引入的,如果你正在
使用
的
MySQL
版本比 5.7.8 还要低,则无法
使用
该函数。请升级到
MySQL
5.7.8 及以上版本。
3. 键名或键值类型不正确:`
JSON
_OBJECT` 函数要求传递的键名和键值必须是
MySQL
支持的数据类型,否则会出现错误提示。请检查传递给函数的键名和键值数据类型是否正确,例如是否
使用
了字符串类型的键名或数字类型的键值。
4.
MySQL
配置错误:某些情况下可能会出现
MySQL
配置错误导致无法
使用
`
JSON
_OBJECT` 函数的问题,请检查
MySQL
配置文件中是否启用了
JSON
功能,以及是否加载了正确的插件。