在 Django 中選擇具有重複欄位值的行
考慮一個具有允許重複值的非唯一名稱欄位的 Django 模型。要選擇名稱欄位中至少有一個重複值的所有行,可以探索 ORM 和 SQL 方法。
Django ORM 方法
利用Django 的聚合功能,可以使用下列ORM 表達式來完成此任務:
from django.db.models import Count Literal.objects.values('name') .annotate(Count('id')) .order_by() .filter(id__count__gt=1)
此表達式來完成此任務:
此表達式來完成此任務:
此表達式來完成此任務:
dupes = Literal.objects.values('name') .annotate(Count('id')) .order_by() .filter(id__count__gt=1) Literal.objects.filter(name__in=[item['name'] for item in dupes])
此運算式按名稱、計數對模型實例進行分組每個名稱出現的次數,並過濾結果以僅包含具有重複實例的名稱。
增強的 Django ORM 方法select * from literal where name IN ( select name from literal group by name having count((name)) > 1 );
以上是如何使用 ORM 和 SQL 在 Django 中選擇具有重複欄位值的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!