使用内部联接中的计数对查询进行排序

sar*_*man 4 node.js express sequelize.js

我正在尝试将此查询转换为序列化查询对象,正确的方法是什么?

SELECT families.id, count('answers.familyId') FROM families LEFT JOIN 
answers on families.id = answers.familyId WHERE answers.isActive=1 AND
answers.answer=1 GROUP BY families.id HAVING COUNT('answers.familyId')>=6
Run Code Online (Sandbox Code Playgroud)

pio*_*ias 5

假设这Family是您的familiessequelize模型,Answer是您的answerssequelize模型,并且sequelize是您的Sequelize实例

Family.findAll({
    attributes: ['*', sequelize.fn('COUNT', sequelize.col('Answers.familyId'))],
    include: [
        {
            model: Answer,
            attributes: [],
            where: {
                isActive: 1,
                answer: 1
            }
        }
    ],
    group: '"Family.id"',
    having: sequelize.where(sequelize.fn('COUNT', sequelize.col('Answers.familyId')), '>=', 6)
}).then((families) => {
    // result
});
Run Code Online (Sandbox Code Playgroud)

有用的文档链接: