gpt4 book ai didi

sequelize.js - 如何使用 sequelize 获得不同的计数?

转载 作者:行者123 更新时间:2023-12-03 10:56:27 25 4
gpt4 key购买 nike

我正在尝试使用 sequelize 获取特定列的不同计数。我最初的尝试是使用我的模型的“计数”方法,但看起来这是不可能的。

需要 DISTINCT 功能是因为我正在加入其他表并根据相关表过滤父表的行。

这是我想要的查询:

SELECT COUNT(DISTINCT Product.id) as `count` 
FROM `Product`
LEFT OUTER JOIN `Vendor` AS `vendor` ON `vendor`.`id` = `Product`.`vendorId`
WHERE (`vendor`.`isEnabled`=true );

对我的产品模型使用以下查询:
Product.count({
include: [{model: models.Vendor, as: 'vendor'}],
where: [{ 'vendor.isEnabled' : true }]
})

生成以下查询:
SELECT COUNT(*) as `count` 
FROM `Product`
LEFT OUTER JOIN `Vendor` AS `vendor` ON `vendor`.`id` = `Product`.`vendorId`
WHERE (`vendor`.`isEnabled`=true );

最佳答案

更新:新版本

正如评论中提到的,自我的原始帖子以来,情况发生了变化。现在有单独的 distinctcol 选项。 The docs for distinct 状态:

Apply COUNT(DISTINCT(col)) on primary key or on options.col.



看来,您现在想要的是以下内容:
MyModel.count({
include: ...,
where: ...,
distinct: true,
col: 'Product.id'
})
.then(function(count) {
// count is an integer
});

原帖

在查看 Model.count method in lib/model.js 并跟踪一些代码后,我发现在使用 Model.count 时,您可以将 MYSQL 支持的任何类型的聚合函数参数添加到您的选项对象中。以下代码将为您提供 MyModelsomeColumn 中不同值的数量:
MyModel.count({distinct: 'someColumn', where: {...}})
.then(function(count) {
// count is an integer
});

该代码有效地生成了这样的查询: SELECT COUNT(args) FROM MyModel WHERE ... ,其中 args 是选项对象中未保留的所有属性(例如 DISTINCTLIMIT 等)。

关于sequelize.js - 如何使用 sequelize 获得不同的计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22643263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com