2013-10-30 18 views
10
ben bu sorguyu yapabiliriz bunun için, her bir grup için son değiştirilme kaynakları listelemek zorunda

ile seçmek sqlalchemy Sadece resource_group_id ve last_modified sütunlarını nasıl seçebilirim?max group_by ve order_by

SELECT resource_group_id, max(last_modified) AS max_1 
FROM resource GROUP BY resource_group_id ORDER BY max_1 DESC 

cevap

6
model.Session.query(
    model.Resource.resource_group_id, func.max(model.Resource.last_modified) 
).group_by(model.Resource.resource_group_id).order_by(
    func.max(model.Resource.last_modified).desc()) 
3

Bunu zaten var, ama ileride başvurmak için orijinal sorgu ile neler anlatmaya çalışacağım: SQL

istediğim şey budur.

SELECT resource.resource_group_id AS resource_group_id, 
     resource.extra_column1 AS extra_column1, 
     resource.extra_column2 AS extra_column2, 
     ... 
     count(resource.resource_group_id) AS max_1 
GROUP BY resource_group_id ORDER BY max_1 DESC; 

Bu won': sqlalchemy olarak

orijinal sorgu gibi bir şey bu yüzden, bu oluşturulan SQL select deyiminde kaynak masada her sütunu listeler query(model.Resource, ...) bir model başvurusu belirtilmişse GROUP BY ile çalışın.

Bunu önlemek için genel bir yolu sorgu yöntemine ekleyerek açıkça seçmek istediğinizi sütunları belirtmektir .query(model.Resource.resource_group_id)