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
Freigeben: 2025-01-04 11:09:35
Original
738 Leute haben es durchsucht

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'))
Nach dem Login kopieren
  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)
Nach dem Login kopieren
  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])
Nach dem Login kopieren

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
);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage