簡體   English   中英

sqlalchemy:僅在一列上不同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM