我有一个用户查询,它按每个用户的订单数量 (ordersCount) 进行过滤。
User.query.filter('ordersCount>2')
如果我运行它,它会显示:“‘where 子句’中的未知列‘ordersCount’”
根据我的经验,我应该在此类操作上使用 having,因为 mysql 不允许它用于不属于表的字段,但是如果我使用 having 而不是过滤器运行它,我会得到:
(1054, "Unknown column 'ordersCount' in 'having clause'") 'SELECT count(1) AS count_1 \nFROM user \nHAVING ordersCount > 2' ()
那么如何在 sqlalchemy 中过滤计数列呢?
最佳答案
参见 Ordering, Grouping, Limiting, Offset...ing 的文档.根据提供的示例代码和假设您的订单存储在 orders
表中,您的版本看起来类似于:
>>> s = select([orders.c.user_id, func.count(orders.c.id)]).\
... group_by(orders.c.user_id).having(func.count(orders.c.id) > 2)
通过这种方式,您将获得相关用户的 user_id
。如果你想检索 User
对象,只需制作关于子查询的 s
并将你的 User
查询与此子查询连接起来以检索有问题的用途。
关于python - sqlalchemy 按计数列过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6244038/