如何对联接使用SQLAlchemy Max()?

时间:2018-12-08 21:21:23

标签: python sqlalchemy

我有以下SQL语句,希望将其转换为SQLAlchemy(尽可能最佳)。

 SELECT distinct u.username, u.receipt, u.expires_at, u.account_type, max(r.acctupdatetime) as lastActivity
                FROM user u
                JOIN radcheck c on c.username = u.username
                LEFT JOIN radacct r on u.username = r.username
                WHERE u.account_type != 'life'
                GROUP BY u.username, u.account_type

我通过执行以下操作完成了大部分工作:

db.session.query(User, Radcheck, RadAcct)
                .join(Radcheck, User.username == Radcheck.username)
                .outerjoin(RadAcct, User.username == RadAcct.username)
                .group_by(User.username, User.account_type)
                .filter(User.account_type != AccountType.life)
                .all()

但是我对如何在RadAcct.acctupdatetime上设置最大值感到困惑。

我知道语法应该是这样的:

session.query(func.max(RadAcct.acctupdatetime))

但是我该如何通过这里的连接实现呢?

表之间没有SQLAlchemy关系。用户名在所有表中都是公用的。

0 个答案:

没有答案