2

私のテーブルは次のようになります。

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

個別のスラッグで選択したいが、結果の一部としてタイトルを返したい。複数の試合でどのタイトルが返されるかは関係ありません。

したがって、私の結果は次のようになります。

[('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の個別の値ごとに1行のみを返します。このmax関数は、各グループ内のタイトルの最大値を返す集計関数です。これにより、タイトルの1つが得られます。どちらのタイトルでもかまわないので、必要なのはそれだけです。

于 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 に答える