我需要一个查询,该查询可以从表 A 返回在表 B 中具有多于 COUNT 条记录的记录。该查询需要能够与可能应用于表 A 的其他过滤器保持一致。
案例研究示例:
我有一个人员和约会表。我正在寻找所有参加过 5 次或以上预约的人。它还必须支持人员表上的额外过滤语句,例如年龄 > 18。
编辑——解决方案
subquery = db.session.query(Appointment.id_person,
func.count('*').label('person_count')) \
.group_by(Appointment.id_person).subquery()
qry = db.session.query(Person) \
.outerjoin((subquery, Person.id == subquery.c.id_person)) \
.order_by(Person.id).filter(subquery.c.person_count >= 5).filter(Person.dob <= '1992-10-29')
最佳答案
使用子查询:
SELECT * from person
WHERE PersonID IN
(SELECT PersonId FROM appointments
GROUP BY PersonId
HAVING COUNT(*) >= 5)
AND dob > 25
关于python - 依赖于另一个表中的 COUNT 的 SQL 查询? - SQLAlchemy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4057223/