PostreSQL包含every()
aggregate functions,它通过在所有组行上运行谓词来过滤组。
例如,对于下表:
star_name | star_type | landed_upon
-----------+-----------+-------------
Mars | Planet | t
Venus | Planet | t
Rhea | Moons | f
Titan | Moons | t
此every()
查询:
SELECT star_type, max(star_name) example, COUNT(*)
FROM stars
GROUP BY star_type
HAVING every (landed_upon = true);
返回Planet
组,但不返回Moons
组,因为Rhea
不符合landed_upon
组中的Moons
谓词:
star_type | example | count
-----------+---------+-------
Planet | Venus | 2
(1 row)
PostgreSQL every()
是否有等效的SQLAlchemy运算符?
答案 0 :(得分:1)
您可以使用func
对象生成SQL函数。
.having(func.every(Star.landed_upon))
将生成
HAVING EVERY(stars.landed_upon)