gpt4 book ai didi

mysql - 使用 HAVING 子句、COUNT 聚合和 GROUP BY 与 Sequelize 同时过滤数据

转载 作者:行者123 更新时间:2023-12-03 22:34:30 26 4
gpt4 key购买 nike

我有一个包含表 datasetdata_record 的 MySQL 数据库。两者通过 1 对多关联 ( dataset.hasMany(data_records) ) 关联。我想通过 data_record 的属性过滤数据集。比如说,只显示包含一定数量的 data_records 的数据集,每个数据记录的某些属性都有不同的值。
我有以下 SQL,它给出了正确的结果:

SELECT dataset.id, dataset.name 
FROM dataset
WHERE dataset.id IN
(SELECT dataset_id
FROM
(SELECT DISTINCT dataset_id, some_attribute
FROM data_record) AS data
GROUP BY data.dataset_id
HAVING COUNT(some_attribute) = :filterValue);, value
我在 Sequelize 中尝试了很多东西,但我不能让 have 子句在那里工作。我使用 sequelize.query() 得到了正确的结果。我很欣赏这方面的任何提示,在这里停留了很长一段时间并且对解密 Sequelize 错误感到厌倦。看来您不能再在 sequelize.where 中使用 having 了。如果您认为我应该只用 SQL 编写查询,请告诉我。
编辑:为了澄清,我正在尝试使用 Model.findAll() 完成查询。

最佳答案

FROM 子句中的子查询可以工作。
这也将支持 sequelize,如果它在 have 子句中不能正常工作。 (我不使用 sequelize 所以无法确认这是否有效)。

SELECT dataset.id, dataset.name 
FROM dataset
JOIN (SELECT dataset_id, COUNT(DISTINCT some_attribute) unique_some_attributes
FROM data_record
GROUP BY dataset_id) a
WHERE dataset.id = a.dataset_id
AND unique_some_attributes = :filterValue;

关于mysql - 使用 HAVING 子句、COUNT 聚合和 GROUP BY 与 Sequelize 同时过滤数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62920111/

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