You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Sport分组生成Games对象数组的Sequelize/MySQL查询需求

分组查询并封装字段为对象数组

Sequelize 查询语句

假设你的数据模型名为 Game,可以通过以下语句实现按 sport 分组,并将指定字段封装为 games 对象数组:

const result = await Game.findAll({
  attributes: [
    'sport',
    [
      sequelize.fn('JSON_ARRAYAGG',
        sequelize.fn('JSON_OBJECT',
          'id', sequelize.col('id'),
          'gender', sequelize.col('gender'),
          'age_group', sequelize.col('age_group'),
          'style', sequelize.col('style')
        )
      ), 'games'
    ]
  ],
  group: ['sport'],
  raw: true
});
  • JSON_OBJECT 用于将单条记录的指定字段封装为一个对象
  • JSON_ARRAYAGG 用于将分组内的所有对象聚合为一个数组,并命名为 games
  • group: ['sport'] 指定按 sport 字段分组
  • raw: true 返回原始数据结构,避免Sequelize的模型实例包装

MySQL 原生查询语句

如果直接使用MySQL,替换 your_table_name 为实际表名即可:

SELECT
  sport,
  JSON_ARRAYAGG(
    JSON_OBJECT(
      'id', id,
      'gender', gender,
      'age_group', age_group,
      'style', style
    )
  ) AS games
FROM your_table_name
GROUP BY sport;
  • 逻辑与Sequelize一致,通过JSON_OBJECT构造单条记录的对象,再用JSON_ARRAYAGG按sport分组聚合为数组

内容的提问来源于stack exchange,提问作者Inaara Kalani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 15:02:08