SQLAlchemy的GROUP_BY错误
问题描述:
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。
答
它不起作用,因为查询无效。
每列需要在group_by
或需要一个聚合(即max()
,min()
,无论)。
答
你试图做的是以某种方式在mysql中有效,但在标准的sql,postgresql和常识中无效。当按'kod'分组行时,组中的每一行都具有相同的“kod”值,但“rr”的值不同。随着聚合函数,你可以得到在此列中各组的值的一些方面,例如
选择KOD,MAX(RR)从表组由KOD
会给你的“KOD的和最大列表'每个组中的'rr's(由kod)。
令人悲伤的是,在select子句中,只能从group by子句中放置列和/或从其他列中放置集合函数。你可以把你喜欢的东西放在哪里 - 这是用于过滤。您还可以在包含集合函数表达式的组之后添加额外的'having'子句,该集合函数表达式也可以用作组后过滤。
我正在使用mssql + pyodbc – 2010-11-08 01:22:53
你是否想过如何解决这个问题? – vonPetrushev 2010-11-19 00:38:46