我有一个查询,它产生一个 id,后跟一个计数。我只想获取那些计数为 N 的行。我尝试了下面的代码,但我得到“错误:列“cert_count”不存在”。我猜我用错了标签?
cust_cert_counts = db.session.query(
CustomerCertAssociation.customer_id,
func.count(CustomerCertAssociation.certification_id).label('cert_count')).filter(
CustomerCertAssociation.certification_id.in_(cert_ids)).group_by(
CustomerCertAssociation.customer_id)
cust_cert_counts.filter('cert_count=2').all()
Run Code Online (Sandbox Code Playgroud)
您不能像这样过滤别名列:
SELECT 1 AS foo WHERE foo = 1;
Run Code Online (Sandbox Code Playgroud)
您必须将其嵌套在子查询中:
SELECT * FROM (SELECT 1 AS foo) bar WHERE bar.foo = 1;
Run Code Online (Sandbox Code Playgroud)
对于您的特定示例,您必须执行以下操作:
subq = cust_cert_counts.subquery()
db.session.query(subq).filter(subq.c.cert_count == 2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2504 次 |
| 最近记录: |