python - 依赖于另一个表中的 COUNT 的 SQL 查询? - SQLAlchemy

标签 python sql sqlalchemy

我需要一个查询,该查询可以从表 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/

相关文章:

python - 从完整版本字符串中获取主要版本的子字符串

mysql where 子句错误

python - 尝试删除记录时,依赖规则试图清空 SQL-Alchemy 中的主键列

Python - SQLAlchemy 获取 'Table' 对象不可调用错误

python - 列出多态继承选择并根据该选择创建实例

python - 如何在给定的时间间隔内随机调用一个函数? - Python

python - 如何将元组转换为字典然后附加到列表

python - 为什么有了pip还需要Anaconda?

sql - 按自定义列对表格进行分组

MySQL 从单独的表中获取 count()