我将case语句保存在变量中:
article_video_exists = exists(
select([1], correlate=False, from_obj=article_video_t).where(
article_video_t.c.article_id == article_t.c.id))
has_videos_case = case([(article_video_exists, 1), ], else_=0).label(
'has_videos')
并使用此案例
select([has_videos_case], from_obj=article_t)
执行后,我在查询FROM语句中看到了
FROM article_t,
(select 1
from article_video_t
where article_video_t.article_id=article_t.id)
和我应该使用别名的错误。 我尝试使用别名for select,但它并没有解决我的问题。 我尝试将correlate = False传递给所有select子句,但它没有帮助,但是如果我在不使用变量的情况下在final select子句中按原样传递case,那么它的工作并不会生成无效的FROM子句。
但是在此之后我有很多重复代码,那么在这种情况下如何使用变量?感谢。
答案 0 :(得分:0)
使用select(...)。correlate_except(article_video_t)修复。