在SQLAlchemy中使用distinct后更改order_by

时间:2020-10-28 12:44:35

标签: python postgresql flask sqlalchemy flask-sqlalchemy

我正在尝试创建一个查询,该查询显示按值'difference_absolute'排序的结果,并且在'company_id'上是唯一的(因为将出现多个company_id,并且在结果中我只希望显示每个company_id一次)。为此,我尝试使用ORDER_BY和DISTINCT:

db.session.query(Ranking).\
                 filter(Ranking.timestamp > last7days).\
                 group_by(Ranking.company_id, Ranking.id).\
                 distinct(Ranking.company_id).\
                 order_by(Ranking.difference_absolute).\
                 limit(10)

但是,事实证明您只能在DISTINCT中使用的商品上执行ORDER_BY,而我不知道该怎么做以及更改顺序之后。

有指针吗?

1 个答案:

答案 0 :(得分:0)

感谢@AdamKG提供的指针,我将其与以下查询一起使用:

Ranking.query.distinct(Ranking.company_id).\
                       filter(Ranking.timestamp > last7days).\
                       from_self().\
                       order_by(Ranking.difference_absolute.desc()).\
                       limit(10)

我将进一步阅读from_self()。