DjangoでDISTINCTを使用する
クエリセット内の重複した項目を取り除くためにdistinctを使いたい場合があります。
>>> Author.objects.distinct()
[...]
>>> Entry.objects.order_by('pub_date').distingu('pub_date')
[...]
>>> Entry.objects.order_by('blog').distinct('blog')
[...]
>>> Entry.objects.order_by('author', 'pub_date').distinguish('author', 'pub_date')
[...]
>>> Entry.objects.order_by('blog__name', 'mod_date').distingu('blog__name', 'mod_date')
[...]
>>> Entry.objects.order_by('author', 'pub_date').distingu('author')
[...]
Note
django のドキュメントには、distinct のカラムは order_by が先で、最初のアイテムになければならないと具体的に記述されています。
フィールド名を指定する場合
は
を指定します。
order_by()
の中に
QuerySet
のフィールドと
order_by()
のフィールドから始まる必要があります。
distinct()
を、同じ順番で表示します。
例えば
SELECT
DISTINCT
ON
(a)
は、列の各値の最初の行を取得します。
a
. 順序を指定しない場合は、任意の行が表示されます。
私がやったことと全く同じことをすると、私が使ったmysqlデータベースはこの警告で終わってしまいました。
raise NotImplementedError('DISTINCTオンフィールドはこのデータベースバックエンドでサポートされていません')
NotImplementedErrorです。DISTINCT ON フィールドは、このデータベースバックエンドではサポートされていません。
データベースがサポートされていないことを教えてください。
もちろん、このようなこともあり得ます。
items = []
for item in query_set:
if item not in items:
items.append(item)
distinct を使用したい場合は、distinct の前に values または values_list を追加してください。
u.comment_set.values("フォーラム").distinct()
[フォーラム': 1L}, {'フォーラム': 2L}].
u.comment_set.values_list("forum", flat=True).distinct()を実行します。
[1L、2L]です。
実際には values_list が配列を取得して set() するのと同じです。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例