У меня есть база данных sqlite3, с которой я общаюсь с помощью flask sqlalchemy. Мне нужно выполнить запрос, чтобы вернуть самый последний результат для каждого элемента в списке, который также фильтруется по дополнительным критериям.
Примером является список, который содержит значения [1, 2, 3, 4, 5]
и второй фильтр, который обновил значение в виде списка, например ["master", <user_id>]
. Мне нужно найти последний результат в таблице для value=1
, который был обновлен master или user_id, затем также для value=2
и т. Д.
Я начал с:
db.session.query(MyTable).filter(
MyTable.value.in_(list_of_values),
MyTable.updated_by.in(["master",<user_id>])
.order_by(MyTable.timestamp.desc()).all()
Который вернет все результаты. Но тогда как его отфильтровать, чтобы у меня осталось только с одним результатом для каждого из значений в списке ввода? Мне нужно только один результат для каждого значения - самое последнее.
ОБНОВЛЕНИЕ:
Я также мог бы добавить group_by
к запросу, чтобы помочь сортировать вещи, но тогда как сортировать результат по максимальному идентификатору и возвращает наибольшее значение для каждой группы.