gpt4 book ai didi

子查询中的 SqlAlchemy 闭包

转载 作者:行者123 更新时间:2023-12-04 21:23:48 26 4
gpt4 key购买 nike

我搜索了很多主题并没有找到答案,或者问题太复杂了。所以没关系。这是我的第一个问题。
这是 SQL

SELECT  parent.*,
(
SELECT COUNT(*)
FROM child
WHERE parent.id = child.parent_id
)
FROM parent

如何在 sqlalchemy 中执行此子句?
WHERE   ui.invited_by = u.id

可以在收藏中复制吗? sql 表达式?
附言我知道可以通过 group_by 来完成。但我需要通过子查询。

谢谢你。

最佳答案

SA 查询(使用子查询)会给你你想要的结果:

sq = session.query(Child.parent_id, func.count(Child.id).label("child_num")).group_by(Child.parent_id)
sq = sq.subquery()
# use outerjoin to have also those Parents with 0 (zero) children
q = session.query(Parent, sq.c.child_num).outerjoin(sq)
q = q.filter(Parent.id == 1) # add your filter here: ui.invited_by = u.id
for x in q.all():
print x

虽然子查询与您描述的不完全一样,但类似于:
SELECT      parent.*,
anon_1.child_num AS anon_1_child_num
FROM parent
LEFT JOIN (SELECT child.parent_id AS parent_id,
count(child.id) AS child_num
FROM child
GROUP BY child.parent_id
) AS anon_1
ON parent.id = anon_1.parent_id

仍然不明白为什么您需要按照您描述的方式进行子查询。

关于子查询中的 SqlAlchemy 闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7289825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com