【发布时间】:2014-04-23 12:50:30
【问题描述】:
我已经研究了很多关于在group by 之前执行order by 的查询,并找到了raw SQL 方面的大多数答案。但是,我想在SQLAlchemy Code 中看到解决方案。
-
我最初的幼稚解决方案如下:
session.query(MyTable).order_by(timestamp).group_by(begin_date)不幸的是,这会导致表格首先被分组然后排序,这不会返回我所期望的。
-
第二,我试过了:
stmt = session.query(MyTable).order_by(timestamp) session.query(stmt).group_by(begin_date)这会返回正确的结果,但是,结果是
KeyedTuples,而出于向后兼容性的原因,我实际上希望拥有 MyTable 对象。
我怎样才能做到这一点?
【问题讨论】:
-
对于我使用过的每个数据库引擎,在 group by 之前进行 order by 都会引发错误。你找到了什么答案?
-
您能展示一下您尝试生成的 SQL 吗?你可能想要
... group by begin_date order by begin_date, timestamp? -
我想通了,但无法发布我自己的问题的答案,所以这是答案:stmt = session.query(MyTable).order_by(timestamp); session.query().add_entity(MyTable, alias=stmt).group_by(begin_date);
标签: python sql sqlalchemy