node.js - 多个字段的 Sequelize 分组会导致 Sequelize 错误

标签 node.js sequelize.js

我的查询如下所示:

 db.test.findAll({
            group: ['source'],
            attributes: ['source','source_id', [Sequelize.fn('COUNT', 'source'), 'count']],
            order: [[Sequelize.literal('count'), 'DESC']],
            raw: true
        }).then((sources) => {
            console.log('source is ' + sources);
        }).catch((err) => {
            console.log('error i is ' + err);
        })

测试.js

module.exports = function (sequelize, DataTypes) {
    const test = sequelize.define('test', {
        id: {primaryKey: true, type: DataTypes.INTEGER, autoIncrement: true, allowNull: false, unique: true},
        source: {type: DataTypes.STRING, allowNull: false},
        source_id: {type: DataTypes.STRING, allowNull: false},

    });

    return test
};

一旦我运行这个查询,它就会给我这个错误:

SELECT 列表的表达式 #2 不在 GROUP BY 子句中,并且包含非聚合列“db.test.source_id”,该列在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by 不兼容

最佳答案

也尝试在 group by 子句中使用 source_id 。因为这里 SQL get 混淆了从多个 source_id 中选择哪个。您有 groupBy 源,因此它会选择,但 souce_id 仍然不明确

 db.test.findAll({
                group: ['source', 'source_id'],
                attributes: ['source','source_id', [Sequelize.fn('COUNT', 'source'), 'count']],
                order: [[Sequelize.literal('count'), 'DESC']],
                raw: true
            }).then((sources) => {
                console.log('source is ' + sources);
            }).catch((err) => {
                console.log('error i is ' + err);
            })

关于node.js - 多个字段的 Sequelize 分组会导致 Sequelize 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52050637/

相关文章:

css - 如何使用 webpack 导入 css?

node.js - putMapping elasticsearch索引未找到异常

linux - 使用 Git 进行自动部署

postgresql - 在 Sequelize 中为 Postgres 使用事务

javascript - 环回。如何获得一个用户的所有角色?

javascript - Intellisense : view file as browser JavaScript, 不是 Node.js?

javascript - Sequelize : escape string in a literal string

migration - CockroachDB 的序列化迁移 - 错误 : no data source matches prefix: ranges

mysql - FindAll WHERE 在 Sequelize 中使用包含别名字段

javascript - 从 Sequelize 和 Node.js 中的 CSV 中删除重复值