func.max获得意想不到的结果?

时间:2010-03-07 18:38:17

标签: sqlalchemy max

我有一张桌子(story_id,votes) 有数据 [(1,3),(2,4)]

当我尝试进行查询时... session.query(table.c.story_id,func.max(table.c.votes))。first() 我去拿: (1,4)

我期望的结果是: (2,4)

误解在哪里?

1 个答案:

答案 0 :(得分:0)

您没有按任何方式进行分组,因此数据库可以简单地返回任何具有此类查询的行。如果要添加group_by = table.c.story_id,则返回正确的结果。

因此,大多数数据库都会默认阻止这些查询,因为返回的结果是任意的。例如,在PostgreSQL中,您会收到一个错误,即story_id不是聚合查询的一部分而不是group by子句,因此它不知道要返回哪一行。

无论哪种方式,请尝试:session.query(table.c.story_id, func.max(table.c.votes)).group_by(table.c.story_id).first()