在 Sequelize 中,GROUP BY 用于按照指定的列对查询结果进行分组。本文将介绍 Sequelize 中 GROUP BY 的使用方法,并提供示例代码,以帮助读者更好地理解和应用该功能。
基本语法
在 Sequelize 中,使用 group
方法来进行分组操作。该方法接收一个字符串或一个数组作为参数,用于指定需要分组的列名。例如:
const result = await Model.findAll({ attributes: [ 'column1', 'column2', [Sequelize.fn('SUM', Sequelize.col('column3')), 'total'] ], group: ['column1', 'column2'] });
在上述代码中,我们通过 group
方法指定了两个列名,即 column1
和 column2
。查询结果会按照这两个列进行分组,并计算每组中 column3
的总和。
指定别名
在使用 group
方法时,我们可以为分组结果指定别名。例如:
const result = await Model.findAll({ attributes: [ 'column1', [Sequelize.fn('SUM', Sequelize.col('column2')), 'total'] ], group: ['column1'] });
在上述代码中,我们使用 Sequelize.fn
方法对 column2
进行求和,并为求和结果指定了别名 total
。查询结果会按照 column1
进行分组,并输出每组中 column2
的总和,别名为 total
。
多列分组
在 Sequelize 中,我们可以指定多个列进行分组。例如:
const result = await Model.findAll({ attributes: [ 'column1', 'column2', [Sequelize.fn('SUM', Sequelize.col('column3')), 'total'] ], group: ['column1', 'column2'] });
在上述代码中,我们指定了两个列 column1
和 column2
进行分组。查询结果会按照这两个列进行分组,并计算每组中 column3
的总和。
过滤分组结果
在使用 group
方法时,我们还可以通过 having
方法对分组结果进行过滤。例如:
const result = await Model.findAll({ attributes: [ 'column1', [Sequelize.fn('SUM', Sequelize.col('column2')), 'total'] ], group: ['column1'], having: Sequelize.where(Sequelize.fn('SUM', Sequelize.col('column2')), '>', 100) });
在上述代码中,我们使用 having
方法过滤了分组结果。查询结果会按照 column1
进行分组,并输出每组中 column2
的总和。但是,只有当总和大于 100 时,才会输出该组的结果。
示例代码
下面是一个使用 Sequelize 中 GROUP BY 的示例代码:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- --------- - --- --------------------- ----------- ----------- - -------- ------- --- ----- ----- - ------------------------- - -------- ----------------- -------- ------------------ -------- ----------------- --- ------ -- -- - ----- ---------------- ------ ---- --- ----- ------------------ - -------- ---- -------- --- -------- -- -- - -------- ---- -------- --- -------- -- -- - -------- ---- -------- --- -------- -- -- - -------- ---- -------- --- -------- -- - --- ----- ------ - ----- --------------- ----------- - ---------- -------------------- -------------------------- -------- -- ------ ------------ ------- ----------------------------------- -------------------------- ---- --- --- -------------------- -----
在上述代码中,我们定义了一个名为 model
的 Sequelize 模型,并使用 bulkCreate
方法向数据库中插入了四条记录。然后,我们使用 findAll
方法对模型进行查询操作,指定了分组列 column1
,并过滤了分组结果。最后,我们输出了查询结果。
总结
本文介绍了 Sequelize 中 GROUP BY 的使用方法,并提供了详细的示例代码。读者可以根据本文的内容,更好地理解和应用该功能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65f551d72b3ccec22fd76e56