Xuxicheta
@Xuxicheta
инженер

Как правильно выбрать запись с полем максимального значения в Sequelize?

Используемая база данных: sqlite
Model = db.sequelize.define('model', {
	num: { type:Sequelize.INTEGER }
});
var data = Array(10).fill(0);
		for (var index in data) {
			data[index] = await Model.create({   num:  Math.round(50*Math.random())   });
		}

Просто максимальное значение получается путём
let max = await Model.max('num');
Но мне нужна вся запись, там где num максимальный.
Можно получить так
let result = await Model.find({
			where: {
				num : (await Model.max('num'))
			},
			raw: true
		});

но это неудобно и медленно, особенно когда появляются дополнительные условия, появится два одинаковых where

А такой способ, накопанный в документации sequelize
let result = await Model.find({
			where: {
				num: sequelize.fn('max', Sequelize.col('num'))
			}
		});

выдает Database Error
Что не так?
  • Вопрос задан
  • 394 просмотра
Пригласить эксперта
Ответы на вопрос 1
Для описанной задачи, проще всего выбрать первую запись после сортировки по убыванию значения поля num:
const result = await Model.findOne({
      order: [['num', 'DESC']],
    });
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы