SQLite
json_group_array()函数是一个聚合函数,它返回一个包含了分组中的所有的值的 JSON 数组。
类似的,
json_group_object()函数返回一个包含了分组中指定列组成的对象。
json_group_array()函数与
group_concat()函数类似,不同的是
group_concat()函数返回的是一个包含了所有值的字符串。
json_group_array()
语法
这里是 SQLite
json_group_array()的语法:
json_group_array(expr)
参数
expr必需的。一个列名或者表达式。
返回值
SQLite
json_group_array()函数返回一个数组,它包含了指定的分组中的指定表达式或者列中的所有值。
json_group_array()
示例
这里列出了几个常见的
json_group_array()用法示例。
基本用法
这个示例说明了 SQLite
json_group_array()函数的基本用法。
SELECT json_group_array('Hello'); json_group_array('Hello')-------------------------["Hello"]这种用法没有太多的实用价值。 SQLite
json_group_array()一般用在表的聚合查询中。
从表中使用 json_group_array()
返回数组
为了演示
json_group_array()的用法,我们使用以下
UNION语句模拟一个表:
SELECT 'Tim' name, 'Football' hobbyUNIONSELECT 'Tim' name, 'Baseball' hobbyUNIONSELECT 'Tom' name, 'Piano' hobbyUNIONSELECT 'Tom' name, 'violin' hobby;
name hobby---- --------Tim BaseballTim FootballTom PianoTom violin
这里,我们拥有了关于用户爱好的一些行。其中,每行中是用户的一个爱好。
如果我们需要将每个人的爱好信息都放在一行里,并且把每个人的爱好都放在一个数组中,请使用以下语句:
SELECT t.name, json_group_array(t.hobby) hobbiesFROM ( SELECT 'Tim' name, 'Football' hobby UNION SELECT 'Tim' name, 'Baseball' hobby UNION SELECT 'Tom' name, 'Piano' hobby UNION SELECT 'Tom' name, 'violin' hobby) tGROUP BY t.name;
name hobbies---- -----------------------Tim ["Baseball","Football"]Tom ["Piano","violin"]
这里,我们使用
GROUP BY子句 和
json_group_array()函数将同一个
name的爱好信息都放在
hobbies列的 JSON 数组中。
