以下作品
s = select([tsr.c.kod]).where(tsr.c.rr=='10').group_by(tsr.c.kod)
而这不是:
s = select([tsr.c.kod, tsr.c.rr, any fields]).where(tsr.c.rr=='10').group_by(tsr.c.kod)
为什么?
THX。
答案 0 :(得分:0)
它不起作用,因为查询无效。
每列都需要在group_by
或需要汇总(即max()
,min()
,等等。
答案 1 :(得分:0)
你想要做的是在mysql中有效,但在标准sql,postgresql和常识中无效。当您按'kod'对行进行分组时,组中的每一行都具有相同的'kod'值,但例如'rr'的值不同。使用聚合函数,您可以在此列中为每个组获取值的某些方面,例如
从表格组中选择kod,max(rr)by kod
会给你列出每个组中的'kod'和'rr'的最大值(按照kod)。
令人遗憾的是,在select子句中,您只能放置group by子句中的列和/或其他列中的聚合函数。你可以把你喜欢的任何东西放在哪里 - 这用于过滤。您还可以在包含聚合函数表达式的组之后添加其他'having'子句,该聚合函数表达式也可以用作组后过滤。