2010-11-08 73 views
0

以下工作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。

+0

我正在使用mssql + pyodbc – 2010-11-08 01:22:53

+0

你是否想过如何解决这个问题? – vonPetrushev 2010-11-19 00:38:46

回答

0

它不起作用,因为查询无效。

每列需要在group_by或需要一个聚合(即max(),min(),无论)。

0

你试图做的是以某种方式在mysql中有效,但在标准的sql,postgresql和常识中无效。当按'kod'分组行时,组中的每一行都具有相同的“kod”值,但“rr”的值不同。随着聚合函数,你可以得到在此列中各组的值的一些方面,例如

选择KOD,MAX(RR)从表组由KOD

会给你的“KOD的和最大列表'每个组中的'rr's(由kod)。

令人悲伤的是,在select子句中,只能从group by子句中放置列和/或从其他列中放置集合函数。你可以把你喜欢的东西放在哪里 - 这是用于过滤。您还可以在包含集合函数表达式的组之后添加额外的'having'子句,该集合函数表达式也可以用作组后过滤。