代码之家  ›  专栏  ›  技术社区  ›  weeraa

sequalize ORM get max id by grouping分组

  •  0
  • weeraa  · 技术社区  · 8 年前

     global.driverlocationhistory.findAll({
            attributes: [global._sequelize.fn("max", global._sequelize.col('id'))],
            group: ["driverId"]
     }).then(function (results) {
            objDrvr = results;
     })
    

    SELECT max(`id`) FROM `driverlocationhistory` AS `driverlocationhistory` GROUP BY `driverId`;
    

    上面的SQL查询是在mysql服务器上执行的,有查询结果。

    为什么不检索sequelize查询的数据?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Uladzislau Vavilau    8 年前

    你能试试吗,

    await DIR.ProfileModel.findAll({
        attributes: [
            [sequelize.fn('MAX', sequelize.col('profile_id')), 'profile_id'],
        ],
        group: ['user_id'],
        raw: true,
    });
    

    续集生成:

    执行(默认):选择“最大”( profile_id )从 profile 分组依据 user_id

    { profile_id: 106 },
    { profile_id: 187 },
    { profile_id: 109 },
    { profile_id: 111 },
    { profile_id: 112 },
    { profile_id: 113 },
    { profile_id: 115 },
    { profile_id: 116 },
    { profile_id: 117 },
    { profile_id: 120 },
    { profile_id: 121 },
    

    如果raw为false,dataValues为空,我不知道为什么

    {
        profile {
            dataValues: {},
            _previousDataValues: {},
            _changed: {},
            _modelOptions:
            {
                timestamps: false,
                validate: {},
                freezeTableName: false,
                underscored: false,
                underscoredAll: false,
                paranoid: false,
                rejectOnEmpty: false,
                whereCollection: null,
                schema: null,
                schemaDelimiter: '',
                defaultScope: {},
                scopes: [],
                indexes: [],
                name: [Object],
                omitNull: false,
                charset: 'utf8',
                collate: 'utf8_general_ci',
                tableName: 'profile',
                sequelize: [Object],
                hooks: [Object],
                uniqueKeys: {}
            },
        }
    }
    

    有时,您可能期望得到一个您所需要的海量数据集 显示,无需操纵。对于您选择的每一行,请继续 使用update、delete和get函数创建实例 时间。如果你只需要原始数据,不想更新任何东西, 您可以这样做来获取原始数据。

    Read docs