我正在尝试查询现有sqlite数据库中的表。首先必须从用户输入中对数据进行子集化:
query(Data.num == input)
然后我想在此子集中找到另一个字段的最大值和最小值:日期。
我尝试过使用func.min / max以及union,但是收到错误说列不匹配。其中一个问题是func.min / max需要用作查询参数,而不是过滤器。
ids = session.query(Data).filter(Data.num == input)
q = session.query(func.max(Data.date),
func.min(Data.date))
ids.union(q).all()
ArgumentError: All selectables passed to CompoundSelect must have identical numbers of columns; select #1 has 12 columns, select #2 has 2
同样,如果我分别使用func.max和min,则错误说#2有1列。
我认为在SQL中查看此查询也可能有所帮助。
由于
答案 0 :(得分:0)
以下解决方案有效。您首先需要设置查询,然后再过滤掉数据。
query = session.query(Data.num, func.min(Data.date),
func.max(Data.date), Data.date)
query = query.filter(Data.num == input)
query = query.all()