Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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数组_Mysql_Arrays_Group Concat - Fatal编程技术网

MySQL如何选择进入JSON数组

MySQL如何选择进入JSON数组,mysql,arrays,group-concat,Mysql,Arrays,Group Concat,在MySQL 5.7中,我们有JSON_数组对象。我希望执行类似于selectgroup\u CONCAT(field)的操作,但将结果放入JSON\u数组中 我目前的查询是: SELECT GROUP_CONCAT(name) FROM users; 结果:约翰、迈克尔、索菲亚 我希望结果是:[“约翰”、“迈克尔”、“索菲亚”] 我目前的解决办法是: select @j:=json_array_append(@j,'$',name) from users 但这是非常低效的,因为它是为每一行

在MySQL 5.7中,我们有JSON_数组对象。我希望执行类似于
selectgroup\u CONCAT(field)
的操作,但将结果放入JSON\u数组中

我目前的查询是:

SELECT GROUP_CONCAT(name) FROM users;
结果:约翰、迈克尔、索菲亚

我希望结果是:[“约翰”、“迈克尔”、“索菲亚”]

我目前的解决办法是:

select @j:=json_array_append(@j,'$',name) from users

但这是非常低效的,因为它是为每一行计算的。有可能更有效地实现这一点吗?

您可以使用
JSON\u数组来实现您想要的:

SELECT JSON_ARRAY(GROUP_CONCAT(name SEPARATOR ',')) AS names FROM users;
这样,您就可以获得所需的结果,而无需重新计算每一行。

您可以使用
JSON_ARRAYAGG
示例如下:


不适用于特殊字符