我正在尝试选择按最新回复时间降序排列的最新线程(线程)(回复是帖子模型,这是标准论坛查询)。在 SQL 中,我会这样写:
SELECT * FROM thread AS t ORDER BY (SELECT MAX(posted_at) FROM post WHERE thread_id = t.id) DESC
我如何在 SQLAlchemy 中做这样的事情?我试过这样的事情:
scalar = db.select[func.max(Post.posted_at)].where(Post.thread_id == Thread.id).as_scalar()
threads = Thread.query.order_by(scalar.desc()).all()
但似乎我不明白标量是如何工作的。第五次阅读文档无济于事。有人可以帮我在 SQLAlchemy 中编写这样的查询吗?我在这个应用程序中使用了 flask-sqlalchemy 和 MySQL。