ホームページ >データベース >mysql チュートリアル >Django で重複したフィールド値を持つ行を選択する方法は?

Django で重複したフィールド値を持つ行を選択する方法は?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-04 11:09:35696ブラウズ

How to Select Rows with Duplicate Field Values in Django?

Django で重複フィールド値を持つ行を選択する

特定のフィールドに少なくとも 1 つの重複値を持つモデルからすべての行を選択するには、Django の集計とフィルタリングを組み合わせて使用​​できます。機能:

  1. 集計値: annotate() メソッドを使用して、指定されたフィールドの重複値の数を計算します。たとえば、名前フィールドを持つモデルの場合:
from django.db.models import Count
dupes = Literal.objects.values('name').annotate(id_count=Count('id'))
  1. カウントに基づいたフィルター: filter() メソッドを使用して、カウントが超過する行を選択します。 1. これにより、複製された値を含む ValuesQuerySet が返されます。値:
dupes = dupes.filter(id_count__gt=1)
  1. 完全なレコードを取得: 完全なレコードを取得するには、in フィルターを使用して、名前フィールドが重複した値と一致する行を選択します:
dupes = Literal.objects.filter(name__in=[item['name'] for item in dupes])

代替 SQL解決策:

必要に応じて、サブクエリを使用して同じ結果を達成することもできます:

SELECT *
FROM literal
WHERE name IN (
    SELECT name
    FROM literal
    GROUP BY name
    HAVING COUNT(*) > 1
);

以上がDjango で重複したフィールド値を持つ行を選択する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。