2012-12-31 34 views
1

我的表看起來像這樣:SQLAlchemy的:不同的只有一列

title  | slug 
------------------------------ 
The Title  | the-title 
Another Title | another-title 
another title | another-title 

我想不同的塞來選擇,也希望標題返回結果的一部分。哪個冠軍得到了多場比賽的回報,我不在乎。

所以我的結果是這樣的:

[('The Title', 'the-title'), ('Another Title', 'another-title')] 
+0

你的意思是你的意思是'another-slug'而不是'another-title'嗎? –

回答

3

你可能想這樣做:

session.query(func.max(Table.title), Table.slug).group_by(Table.slug).all() 
2

而不是使用一個distinct關鍵字,你應該使用一個aggregate功能與group by條款。請看下面的SQL來解決你的需要:

SELECT MAX(title), slug 
    FROM yourtable 
GROUP BY slug 

group by子句將導致查詢到每個不同的值只返回一行團狀。 max函數是一個聚合函數,它將返回每個組中標題的最大值。這會給你一個標題,既然你不在乎哪一個,那應該就是你所需要的。

0

您也可以解決這個問題:

session.query(Table.title, Table.slug).distinct(Table.slug) 

這也可以讓你回到附加字段(比如你想看看Table.id)在同一.query()字段列表,而不需要單獨的子查詢。