2010-11-08 41 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'子句,該集合函數表達式也可以用作組後過濾。