我的表格如下:
title | slug
------------------------------
The Title | the-title
Another Title | another-title
another title | another-title
我想通过不同的slug选择,但也希望将标题作为结果的一部分返回。多次匹配返回哪个标题,我不在乎。
所以我的结果看起来像这样:
[('The Title', 'the-title'), ('Another Title', 'another-title')]
答案 0 :(得分:3)
你可能想做类似的事情:
session.query(func.max(Table.title), Table.slug).group_by(Table.slug).all()
答案 1 :(得分:3)
您应该使用带有distinct
子句的aggregate
函数,而不是使用group by
关键字。请考虑以下SQL来解决您的需求:
SELECT MAX(title), slug
FROM yourtable
GROUP BY slug
group by
子句将导致查询仅为slug的每个不同值返回一行。 max
函数是一个聚合函数,它将返回每个组中title的最大值。这将给你一个标题,因为你不关心哪一个,这应该是你所需要的。
答案 2 :(得分:1)
你也可以用以下方法解决这个问题:
session.query(Table.title, Table.slug).distinct(Table.slug)
这也允许您在同一Table.id
字段列表中返回其他字段(例如,您希望查看.query()
),而无需单独的子查询。