Mysql 如何使用Sequelize获取最大列
我正在使用Sequelize,我在获取列的最大值方面遇到了问题Mysql 如何使用Sequelize获取最大列,mysql,orm,sequelize.js,Mysql,Orm,Sequelize.js,我正在使用Sequelize,我在获取列的最大值方面遇到了问题 var userId = req.body.userId; Sensor.findAll( { where : { userId : userId }, attributes: [ sequelize.fn('MAX', sequelize.literal('temperature')) ], include: [{ model: models
var userId = req.body.userId;
Sensor.findAll(
{
where : {
userId : userId
},
attributes: [
sequelize.fn('MAX', sequelize.literal('temperature'))
],
include: [{
model: models.Temperature
}]
}).then(function(sensor_result) {
res.status(200).json({ status:"success", data: sensor_result });
}).catch(function(error) {
console.log(error);
res.status(409).json({ status:"error", data: null, message:"Something went wrong, please try again." });
})
这是可行的,但如果我像这样将“温度”列更改为“板条箱数据”列,则会导致出现“ER_NON_UNIQ_错误:字段列表中的“createdAt”列不明确”的问题
一个暂时的解决办法是解决这个问题,但根本没有效率
Sensor.findAll(
{
where : {
userId : userId
},
include: [{
model: models.Temperature,
order: [['createdAt', 'DESC']],
limit: 1
}]
}).then(function(sensor_result) {
res.status(200).json({ status:"success", data: sensor_result });
}).catch(function(error) {
res.status(409).json({ status:"error", data: null, message:"Something went wrong, please try again." });
})
因此,我想知道是否有任何选项可以获取createdAt列的最大值您是否尝试在第二个查询中使用完整的列名?根据您的情况,它将是
sequelize.fn('MAX',sequelize.literal('Temperature.createdAt'))
。我认为这个错误是由多个列的名称为createdAt
(因此变得模棱两可)造成的,但不知何故,它也不起作用。但不管怎样,我发现我的逻辑是错误的,因为这会返回我最新的时间,而我要寻找的是插入最新的温度。这样的话,查询就不起作用了,是我的错。
Sensor.findAll(
{
where : {
userId : userId
},
include: [{
model: models.Temperature,
order: [['createdAt', 'DESC']],
limit: 1
}]
}).then(function(sensor_result) {
res.status(200).json({ status:"success", data: sensor_result });
}).catch(function(error) {
res.status(409).json({ status:"error", data: null, message:"Something went wrong, please try again." });
})