MySQL如何选择JSON数组

Ste*_*one 5 mysql arrays group-concat

在 MySQL 5.7 中,我们有 JSON_ARRAY 对象。我想执行类似于 a 的操作SELECT GROUP_CONCAT(field),但将结果放入 JSON_ARRAY 中。

我当前的查询是:

SELECT GROUP_CONCAT(name) FROM users;
Run Code Online (Sandbox Code Playgroud)

结果:约翰、迈克尔、索菲亚

我希望结果是: ["john","michael","sofia"]

我当前的解决方案是:

select @j:=json_array_append(@j,'$',name) from users
Run Code Online (Sandbox Code Playgroud)

但这非常低效,因为它会为每一行重新计算。是否有可能更有效地实现这一目标?

MI5*_*3RE 3

您可以使用它JSON_ARRAY来实现您想要的:

SELECT JSON_ARRAY(GROUP_CONCAT(name SEPARATOR ',')) AS names FROM users;
Run Code Online (Sandbox Code Playgroud)

像这样,它可以让您获得所需的结果,而不必重新计算每一行。