MySQL WITH与json_table联合使用产生报错1210 - Incorrect arguments to JSON_TABLE

本文讲述了在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合作使用时会产生如此报错。
先记下,有空再查下。
有知道底层原理的大佬可以指点迷津一二。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误提示意味着在调用 `JSON_OBJECT` 函数时,传递给该函数的参数数量不正确。`JSON_OBJECT` 函数用于创建一个 JSON 对象,并将指定的键值对添加到该对象中。 该函数的语法为: ``` JSON_OBJECT(key1, value1, key2, value2, ..., keyn, valuen) ``` 其中,`key1`、`key2`、...、`keyn` 表示键名,`value1`、`value2`、...、`valuen` 表示键值。注意,键名和键值之间必须成对出现,且数量必须为偶数。 如果在调用 `JSON_OBJECT` 函数时出现 "Incorrect 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 功能,以及是否加载了正确的插件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值