如何用Sequelize单查询统计多列的唯一值数量?
一次Sequelize查询搞定两列唯一值统计
当然可以用一次查询完成需求,不用分开执行两次count。核心思路是在查询的attributes里同时定义两个聚合统计,调用SQL的COUNT(DISTINCT)函数分别计算两列的唯一元素数量。
直接上代码:
const companyAndProductionUnits = await models.NonCeasedCompaniesProdUnit.findOne({ attributes: [ // 统计company_id的唯一值数量 [models.sequelize.fn('COUNT', models.sequelize.fn('DISTINCT', models.sequelize.col('company_id'))), 'company_id'], // 统计production_unit_id的唯一值数量 [models.sequelize.fn('COUNT', models.sequelize.fn('DISTINCT', models.sequelize.col('production_unit_id'))), 'production_unit_id'] ], raw: true // 返回原始对象,避免Sequelize模型包装 });
执行后就能得到你想要的{ company_id: 15, production_unit_id: 7 }格式结果,而且全程只触发一次数据库查询,比两次单独查询更高效。
内容的提问来源于stack exchange,提问作者Vyacheslav Tarshevskiy
相关产品推荐
相关产品推荐

