python - sqlalchemy:另一列中每个值的最大值
问题描述
我正在尝试在 sqlalchemy 中复制这个(postgresql)SQL:
SELECT MAX(building.id) FROM building JOIN owner ON building.owner_id = owner.id WHERE owner.name IN ('rita', 'sue', 'bob') GROUP BY version.name;
这会找到每个指定所有者拥有的一栋建筑物(最新的)(注意:数据已更改以保护无辜者:我保证,为什么我在真实环境中这样做更有意义)。
我有点 sqlalchemy n00b,我不知道如何在 sqlalchemy 中做到这一点。这是我目前得到的:
subquery = db.query(func.max(model.Building.id))
subquery = subquery.filter(model.Building.owner.has(model.Owner.name.in_(names)))
subquery = subquery.group_by(model.Owner.name)
print(subquery.all())
它报告:
ProgrammingError: (psycopg2.errors.UndefinedTable) missing FROM-clause entry for table "owner"
我在这里想念什么?
解决方案
知道了!我错过了加入的等价物。此代码有效:
subquery = db.query(func.max(model.Building.id))
subquery = subquery.filter(model.Building.owner_id==model.Owner.id)
subquery = subquery.filter(model.Building.owner.has(model.Owner.name.in_(names)))
subquery = subquery.group_by(model.Owner.name)
print(subquery.all())
推荐阅读
- reactjs - 使用redux刷新页面后加载从API获取的数据
- spring-boot - Spring Data JPA 服务未注入控制器
- python - Numpy:检查整数 NaN
- android - 如何改变 observableField 中的传入字符串
- visual-studio-2019 - 将 SubMenu 添加到 VS 解决方案资源管理器项目和项节点类型
- java - Java Android Badge Drawable 在配置更改后无法正常工作
- sql - 带有空格的 SAS 变量
- android - 在 Android Studio 4.0 中发现了多个文件,其独立于操作系统的路径为“META-INFmodule_debug.kotlin_module”
- python - 如何确保来自特定组的所有样本都在 sklearn cross_val_predict 中的训练/测试中?
- c# - LINQ to Entities 无法识别方法“StaticMethod”方法