我们在页面上有一个书单,当您单击一本书时,我们希望您成为 重定向到最新版本
我很难在SQLAlchemy中转换SQL请求:
SELECT book.id, book.name, version.id, version.preview_url
FROM books as book
LEFT OUTER JOIN versions as version
ON version.id = (
SELECT TOP 1 id
FROM versions
WHERE book_id = book.id
ORDER BY versions.id DESC
)
我打印一本书的清单,当您单击一本书时,我希望您被重定向到最新版本,因此我需要每本书的最新版本ID。 SQL请求正在运行,但多次尝试后仍无法成功使其在SQLAlchemy中运行。
subquery = session.query(Version)\
.filter(Book.id == Version.book_id)\
.order_by(Version.id.desc())\
.limit(1)\
.subquery()
query = session.query(Book)\
.join(Version, Version.id == subquery)\
.order_by(Book.id.desc())
SQLAlchemy会将FROM子句注入子查询:FROM Book, Version
还将从主查询中注入FROM子句,因此我们将两次加载Book
并出现错误... >
答案 0 :(得分:0)
看起来像一个相关的子查询,这可能有用:
subquery = session.query(Version) \
.filter(Book.id == Version.book_id) \
.order_by(Version.id.desc()) \
.limit(1) \
.correlate(Book)