如何按JSON数组列的首个元素执行GROUP BY分组?
按JSON数组首个元素分组的实现方案
不同数据库提取JSON数组首个元素的语法略有差异,以下是主流数据库的具体实现:
PostgreSQL
直接使用->>操作符提取数组第一个元素并转为文本,再进行分组:
SELECT (path->>0) AS first_element, COUNT(*) FROM your_table GROUP BY (path->>0);
如果你的path列是jsonb类型,写法完全一致,不需要额外转换。
MySQL
用->>简写语法提取无引号的首个元素值,分组逻辑和查询字段保持一致:
SELECT path->>'$[0]' AS first_element, COUNT(*) FROM your_table GROUP BY path->>'$[0]';
也可以用完整函数写法:JSON_UNQUOTE(JSON_EXTRACT(path, '$[0]')),效果和上述简写完全相同。
SQL Server
通过JSON_VALUE函数提取指定位置的数组元素,再执行分组:
SELECT JSON_VALUE(path, '$[0]') AS first_element, COUNT(*) FROM your_table GROUP BY JSON_VALUE(path, '$[0]');
内容的提问来源于stack exchange,提问作者Giacomo M
相关产品推荐
相关产品推荐

