0
我有一個表(story_id,票) 數據 [(1,3),(2,4)]func.max得到意想不到的結果?
當我嘗試做一個查詢... session.query(表。.c.story_id,func.max(table.c.votes))第() 我會得到: (1,4)
結果我想到的是: (2,4)
誤解在哪裏?
我有一個表(story_id,票) 數據 [(1,3),(2,4)]func.max得到意想不到的結果?
當我嘗試做一個查詢... session.query(表。.c.story_id,func.max(table.c.votes))第() 我會得到: (1,4)
結果我想到的是: (2,4)
誤解在哪裏?
你不是按任何東西分組的,所以數據庫可以簡單地用這樣的查詢返回任何行。如果要添加一個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()
感謝有關塊quaries knowladge,但你推薦查詢給了我這個結果 (1,1)OO這仍然是尷尬的,我:) 但NVM,我將使用Python .o獲取最大值。 好奇的貓...... 的實際情況是這樣的(這是我最初簡化怎麼一回事,因爲我認爲它們是相同的,但也許我錯了) 表:TSV列:ID,story_id邀請,USER_ID 子= db.query(tsv.c.story_id,tsv.c.user_id.label('votes')).group_by(tsv.c.story_id).subquery() t = db.query(sub.c.story_id,func .max(sub.c.votes)) 再次感謝:) – xliiv 2010-03-11 12:20:41