的SQLAlchemy的Query.distinct方法不一致的行爲:返回在SQLAlchemy的不同行使用SQLite
>>> [tag.name for tag in session.query(Tag).all()]
[u'Male', u'Male', u'Ninja', u'Pirate']
>>> session.query(Tag).distinct(Tag.name).count()
4
>>> session.query(Tag.name).distinct().count()
3
所以第二種形式給出正確的結果,但第一種形式沒有。這似乎發生在SQLite但不與Postgres。我有一個函數傳遞一個查詢對象來應用distinct
子句,因此使用上面的第二種方法重寫所有內容將非常困難。有什麼明顯的我失蹤了?
感謝;我在關於「DISTINCT ON」的文檔中看到了這樣的評論,但由於文檔沒有明確說出'這是這種工作的唯一方式'或類似的東西,我沒有意識到這是暗示的。 –