Heim >Datenbank >MySQL-Tutorial >Wie wähle ich Zeilen mit doppelten Feldwerten in Django aus?

Wie wähle ich Zeilen mit doppelten Feldwerten in Django aus?

Susan Sarandon
Susan SarandonOriginal
2025-01-04 11:09:35702Durchsuche

How to Select Rows with Duplicate Field Values in Django?

Zeilen mit doppelten Feldwerten in Django auswählen

Zum Auswählen aller Zeilen aus einem Modell, die mindestens einen doppelten Wert für ein bestimmtes Feld haben können Sie eine Kombination aus Djangos Aggregation und Filterung verwenden Funktionen:

  1. Werte aggregieren: Verwenden Sie die annotate()-Methode, um die Anzahl doppelter Werte für das angegebene Feld zu berechnen. Zum Beispiel für ein Modell mit einem Namensfeld:
from django.db.models import Count
dupes = Literal.objects.values('name').annotate(id_count=Count('id'))
  1. Filter basierend auf der Anzahl: Verwenden Sie die filter()-Methode, um Zeilen auszuwählen, in denen die Anzahl überschritten wird 1. Dadurch wird ein ValuesQuerySet zurückgegeben, das die duplizierten Werte enthält:
dupes = dupes.filter(id_count__gt=1)
  1. Fetch vollständige Datensätze: Um die vollständigen Datensätze zu erhalten, verwenden Sie den In-Filter, um Zeilen auszuwählen, in denen das Namensfeld mit den duplizierten Werten übereinstimmt:
dupes = Literal.objects.filter(name__in=[item['name'] for item in dupes])

Alternative SQL-Lösung:

Bei Bedarf können Sie auch eine Unterabfrage verwenden, um das gleiche Ergebnis zu erzielen:

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

Das obige ist der detaillierte Inhalt vonWie wähle ich Zeilen mit doppelten Feldwerten in Django aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn