我有一张桌子(story_id,votes) 有数据 [(1,3),(2,4)]
当我尝试进行查询时... session.query(table.c.story_id,func.max(table.c.votes))。first() 我去拿: (1,4)
我期望的结果是: (2,4)
误解在哪里?
答案 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()