首页 > 解决方案 > 在 SQLAlchemy 中使用 distinct 后更改 order_by

问题描述

我正在尝试创建一个查询,该查询显示按值“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,我无法弄清楚如何执行此操作,然后更改顺序。

任何指针?

标签: pythonpostgresqlflasksqlalchemyflask-sqlalchemy

解决方案


感谢@AdamKG 的指针,我得到了它使用以下查询:

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

我会更多地阅读 from_self() 。


推荐阅读