依赖其他表COUNT的SQL查询?- SQLAlchemy

1 投票
2 回答
1607 浏览
提问于 2025-04-16 06:18

我需要一个查询,可以从表A中返回记录,这些记录在表B中有超过一定数量的记录。这个查询还需要能够与可能应用于表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')

2 个回答

0

这段内容是关于编程问题的讨论,主要是在解决某个特定的技术难题。虽然具体问题没有被提到,但可以看出大家在分享自己的经验和解决方案。

在编程的世界里,遇到问题是非常常见的。很多时候,其他开发者会在网上分享他们的解决办法,这样可以帮助更多的人。这个讨论的重点就是如何找到合适的解决方案,以及在遇到类似问题时应该注意哪些细节。

总之,编程过程中遇到困难是正常的,关键是要善于寻求帮助和学习他人的经验。

SELECT Person.PersonID, Person.Name
FROM Person INNER JOIN Appointment
ON Person.PersonID = Appointment.PersonID
GROUP BY Person.PersonID, Person.Name
HAVING COUNT(Person.PersonID) >= 5
1

使用一个子查询:

SELECT * from person
WHERE PersonID IN 
  (SELECT PersonId FROM appointments
   GROUP BY PersonId
   HAVING COUNT(*) >= 5)
AND dob > 25

撰写回答