[英]sqlalchemy: distinct only on one column
我的桌子看起來像這樣:
title | slug
------------------------------
The Title | the-title
Another Title | another-title
another title | another-title
我想按截然不同的方式進行選擇,但也希望標題作為結果的一部分返回。 多個比賽返回哪個標題,我不在乎。
所以我的結果看起來像這樣:
[('The Title', 'the-title'), ('Another Title', 'another-title')]
您可能想要執行以下操作:
session.query(func.max(Table.title), Table.slug).group_by(Table.slug).all()
而不是使用的distinct
關鍵字,你應該使用aggregate
函數與group by
子句。 考慮以下SQL解決您的需求:
SELECT MAX(title), slug
FROM yourtable
GROUP BY slug
group by
子句將使查詢為每個段值僅返回一行。 max
函數是一個聚合函數,它將返回每個組中標題的最大值。 這將為您提供一個標題,並且由於您不在乎哪個標題,因此這就是您所需要的。
您也可以使用以下方法解決此問題:
session.query(Table.title, Table.slug).distinct(Table.slug)
這還允許您在同一.query()
字段列表中返回其他字段(例如,您想查看Table.id
),而無需單獨的子查詢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.