Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何使用json函数对Mariadb中json字段的值求和_Mysql_Arrays_Json_Mariadb - Fatal编程技术网

Mysql 如何使用json函数对Mariadb中json字段的值求和

Mysql 如何使用json函数对Mariadb中json字段的值求和,mysql,arrays,json,mariadb,Mysql,Arrays,Json,Mariadb,在表列中提供以下json字段: [ { "payment_date":"2016-04-26", "amount":590, "payment_method":"2" }, { "payment_date":"2017-05-01", "amount":208, "payment_method":"4" } ] 我怎么能把所有的金额加起来 我能得到的最远的结果是 SELECT JSON_EXTRACT(`payment_lines

在表列中提供以下json字段:

[
  {
    "payment_date":"2016-04-26",
    "amount":590,
    "payment_method":"2"
  },
  {
    "payment_date":"2017-05-01",
    "amount":208,
    "payment_method":"4"
  }
]
我怎么能把所有的金额加起来

我能得到的最远的结果是

SELECT JSON_EXTRACT(`payment_lines`, '$[*].amount') FROM tbl
返回:

[590, 208]
我需要得到的是590和208的总和。所以说,在这种情况下,有两行,但可能还有更多

SELECT VERSION();
10.2.6-MariaDB-10.2.6+maria~jessie-log
尝试:

MariaDB[(无)]>选择版本();
+-----------------------+
|版本(|
+-----------------------+
|10.2.6-10.2.6|
+-----------------------+
一行一组(0.00秒)
MariaDB[(无)]>SET@`JSON`:='
'> [
'>   {
“>“付款日期”:“2016-04-26”,
“>“金额”:590,
“>“付款方式”:“2”
'>   },
'>   {
“>”付款日期“:”2017-05-01“,
“>“金额”:208,
“>“付款方式”:“4”
'>   }
'> ]';
查询正常,0行受影响(0.00秒)
MariaDB[(无)]>选择
->杰松吉特国际酒店(
->JSON_EXTRACT(@`JSON`,'$[*].amount'),
->     '[+]'
->)`SUM`;
+------+
|总数|
+------+
|  798 |
+------+
一行一组(0.00秒)

更新

检查:

MariaDB[(无)]>显示变量,其中'Variable_name`='plugin_dir';
+---------------+------------------------+
|变量名称|值|
+---------------+------------------------+
|plugin_dir |/usr/lib/mysql/plugin/|
+---------------+------------------------+
一行一组(0.00秒)
MariaDB[(无)]>\!ls-1/usr/lib/mysql/plugin/| grep'ha_connect'
哈哈
MariaDB[(none)]>CREATE FUNCTION IF NOT EXISTS jsonget_int返回整数
->SONAME'ha_connect.so';
查询正常,0行受影响(0.00秒)
试试:

MariaDB[(无)]>选择版本();
+-----------------------+
|版本(|
+-----------------------+
|10.2.6-10.2.6|
+-----------------------+
一行一组(0.00秒)
MariaDB[(无)]>SET@`JSON`:='
'> [
'>   {
“>“付款日期”:“2016-04-26”,
“>“金额”:590,
“>“付款方式”:“2”
'>   },
'>   {
“>”付款日期“:”2017-05-01“,
“>“金额”:208,
“>“付款方式”:“4”
'>   }
'> ]';
查询正常,0行受影响(0.00秒)
MariaDB[(无)]>选择
->杰松吉特国际酒店(
->JSON_EXTRACT(@`JSON`,'$[*].amount'),
->     '[+]'
->)`SUM`;
+------+
|总数|
+------+
|  798 |
+------+
一行一组(0.00秒)

更新

检查:

MariaDB[(无)]>显示变量,其中'Variable_name`='plugin_dir';
+---------------+------------------------+
|变量名称|值|
+---------------+------------------------+
|plugin_dir |/usr/lib/mysql/plugin/|
+---------------+------------------------+
一行一组(0.00秒)
MariaDB[(无)]>\!ls-1/usr/lib/mysql/plugin/| grep'ha_connect'
哈哈
MariaDB[(none)]>CREATE FUNCTION IF NOT EXISTS jsonget_int返回整数
->SONAME'ha_connect.so';
查询正常,0行受影响(0.00秒)

您使用的是哪个版本的MariaDB?.10.2.6-MariaDB-10.2.6+maria~jessie Log您使用的是哪个版本的MariaDB?.10.2.6-MariaDB-10.2.6+maria~jessie Log感谢您的回答。但是我得到了以下错误:
#1305-函数tbl.JsonGet_Int不存在
plugin_dir:/usr/lib/mysql/plugin/,ls/usr/lib/mysql/plugin/正确地列出了ha_connect.so/。在运行最后一行
之后,如果不存在,则创建函数JsonGet_Int返回整数SONAME'ha_connect.so'它开始工作。。不错!谢谢你的回答。但是我得到了以下错误:
#1305-函数tbl.JsonGet_Int不存在
plugin_dir:/usr/lib/mysql/plugin/,ls/usr/lib/mysql/plugin/正确地列出了ha_connect.so/。在运行最后一行
之后,如果不存在,则创建函数JsonGet_Int返回整数SONAME'ha_connect.so'它开始工作。。不错!