ホームページ > データベース > mysql チュートリアル > ORM と SQL を使用して Django で重複する値を効率的に選択する方法

ORM と SQL を使用して Django で重複する値を効率的に選択する方法

Susan Sarandon
リリース: 2024-12-29 03:40:11
オリジナル
796 人が閲覧しました

How to Efficiently Select Duplicate Values in Django Using ORM and SQL?

Django での重複値の選択: ORM および SQL ソリューション

Django では、一意でないフィールドを持つモデルがある場合、重複した値がある場合は、少なくとも 1 つの重複した値を含むすべての行を取得する必要がある場合があります。これは、Django ORM と生の SQL の両方を使用して実現できます。

Django ORM ソリューション:

Django ORM を使用して重複したフィールド値を持つ行を選択するには、次のようにします。次のアプローチ:

from django.db.models import Count

dupes = Literal.objects.values('name')
                   .annotate(Count('id'))
                   .order_by()
                   .filter(id__count__gt=1)
ログイン後にコピー

これは、名前フィールドとカウントのみを含む ValuesQuerySet を返します。 ID フィールドの。通常の QuerySet を取得するには、これをサブクエリとして使用できます:

Literal.objects.filter(name__in=[item['name'] for item in dupes])
ログイン後にコピー

SQL ソリューション:

Django ORM ソリューションの代わりに、次のこともできます。次のように生の SQL を使用します:

SELECT * FROM literal WHERE name IN (
    SELECT name FROM literal GROUP BY name HAVING COUNT((name)) > 1
);
ログイン後にコピー

比較とパフォーマンス考慮事項:

一般的には、より簡潔で Django の最適化機能を活用できる Django ORM ソリューションが推奨されます。ただし、複雑なクエリや大規模なデータセットの場合は、生の SQL ソリューションの方がパフォーマンスが向上する可能性があります。

以上がORM と SQL を使用して Django で重複する値を効率的に選択する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート