[英]SqlAlchemy: How to use the result of a selected subquery inside the where clause
我希望獲得文章列表以及每篇文章的評論數
我的查詢看起來像這樣 -
comments_subq = meta.Session.query(func.count(Comment.id)).filter(Comment.article_id==Article.id).as_scalar()
articles = meta.Session.query(Article, comments_subq.label("comment_count"))
articles = articles.filter(column('comment_count') >= 5)
它給出了這個錯誤
column "comment_count" does not exist LINE 5: WHERE comment_count >= 5
如何使用我選擇的計數來過濾結果?
使用Query.subquery()方法。
comments_subq = (
meta.Session.query(
Comment.article_id,
func.count(Comment.id).label("comment_count")
)
.group_by(Comment.article_id)
.subquery()
)
articles = (
meta.Session.query(
Article,
comments_subq.c.comment_count
)
.outerjoin(comments_subq, Article.id == comments_subq.c.article_id)
.filter(comments_subq.c.comment_count >= 5)
)
這有效,但它是最佳查詢嗎?
count_subq = meta.Session.query(Comment.article_id, func.count(Comment.article_id) \
.label("comment_count")) \
.group_by(Comment.article_id) \
.subquery()
query = query.add_column(count_subq.c.comment_count.label("comment_count"))
query = query.outerjoin((count_subq, count_subq.c.article_id==Article.id))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.