2

我的表如下所示:

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

我想通过不同的 slug 进行选择,但也希望将标题作为结果的一部分返回。多个比赛返回哪个标题,我不在乎。

所以我的结果是这样的:

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

3 回答 3

4

您可能想要执行以下操作:

session.query(func.max(Table.title), Table.slug).group_by(Table.slug).all()
于 2012-12-31T20:04:10.977 回答
4

distinct您应该使用aggregate带有group by子句的函数,而不是使用关键字。考虑以下 SQL 来解决您的需求:

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

group by子句将导致查询为 slug 的每个不同值仅返回一行。该max函数是一个聚合函数,它将返回每个组中标题的最大值。这会给你一个标题,因为你不在乎哪一个,这应该是你所需要的。

于 2012-12-31T20:12:11.130 回答
2

您还可以通过以下方式解决此问题:

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

Table.id这也允许您在同一个字段列表中返回其他字段(比如您想查看) .query(),而无需单独的子查询。

于 2017-11-03T21:38:23.727 回答