我有一个 mysql
包含视频库元数据的数据库。我希望能够在ui上对视频的元数据进行更改,然后用较新版本保存新示例,但希望将旧版本存档在数据库中。当我使用 sequelize.findAll
我只想返回最新版本。这是我的数据库模式
CREATE TABLE `ututs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`aem_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`locale` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
`status` int(11) NOT NULL,
`version` int(11) NOT NULL DEFAULT 0,
`metadata` json NOT NULL,
`validated` json NOT NULL,
`created_on` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`modified_on` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
如果我使用 mySQLworkbench
,我可以进行此查询
SELECT ANY_VALUE(id), aem_id, ANY_VALUE(`locale`), ANY_VALUE(status), MAX(version), ANY_VALUE(metadata), ANY_VALUE(validated), ANY_VALUE(created_on), ANY_VALUE(modified_on) FROM ututs AS Utut WHERE Utut.locale = 'en_US' AND Utut.status IN (1, 2) GROUP BY aem_id;
并按预期返回数据。但是,当我尝试使用sequelize进行调用时:
UtutModel.findAll({
attributes: [
Sequelize.fn(`ANY_VALUE`, Sequelize.col(`id`)),
Sequelize.fn(`ANY_VALUE`, Sequelize.col(`aem_id`)),
Sequelize.fn(`ANY_VALUE`, Sequelize.col(`locale`)),
Sequelize.fn(`ANY_VALUE`, Sequelize.col(`status`)),
Sequelize.fn(`MAX`, Sequelize.col(`version`)),
Sequelize.fn(`ANY_VALUE`, Sequelize.col(`metadata`)),
Sequelize.fn(`ANY_VALUE`, Sequelize.col(`validated`)),
Sequelize.fn(`ANY_VALUE`, Sequelize.col(`created_on`)),
Sequelize.fn(`ANY_VALUE`, Sequelize.col(`modified_on`))
],
group: ['aem_id'],
where: UtutModel.buildWhere(req.query)
我得到了预期返回的正确条目数,但是它们缺少每列的数据。
Utut {
dataValues: {},
_previousDataValues: {},
_changed: {},
_modelOptions: {
timestamps: false,
validate: {},
freezeTableName: false,
underscored: true,
underscoredAll: false,
paranoid: false,
rejectOnEmpty: false,
whereCollection: [Object],
schema: null,
schemaDelimiter: '',
defaultScope: {},
scopes: [],
indexes: [],
name: [Object],
omitNull: false,
tableName: 'ututs',
sequelize: [Object],
hooks: {},
uniqueKeys: {}
},
_options: {
isNewRecord: false,
_schema: null,
_schemaDelimiter: '',
raw: true,
attributes: [Array] },
__eagerlyLoadedAssociations: [],
isNewRecord: false
},
有没有办法使用 GROUP BY
在sequelize调用中返回我没有使用的数据?
还有,如果我掉了 ANY_VALUE
fns,我得到这个错误
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'utut.Utut.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
暂无答案!
目前还没有任何答案,快来回答吧!