Maison > base de données > tutoriel mysql > Comment sélectionner des lignes avec des valeurs de champ en double dans Django ?

Comment sélectionner des lignes avec des valeurs de champ en double dans Django ?

Susan Sarandon
Libérer: 2025-01-04 11:09:35
original
738 Les gens l'ont consulté

How to Select Rows with Duplicate Field Values in Django?

Sélection de lignes avec des valeurs de champ en double dans Django

Pour sélectionner toutes les lignes d'un modèle qui ont au moins une valeur en double pour un champ donné , vous pouvez utiliser une combinaison de l'agrégation et du filtrage de Django capacités :

  1. Valeurs agrégées : Utilisez la méthode annotate() pour calculer le nombre de valeurs en double pour le champ spécifié. Par exemple, pour un modèle avec un champ de nom :
from django.db.models import Count
dupes = Literal.objects.values('name').annotate(id_count=Count('id'))
Copier après la connexion
  1. Filtre basé sur le nombre : Utilisez la méthode filter() pour sélectionner les lignes où le nombre dépasse 1. Cela renverra un ValuesQuerySet contenant le dupliqué valeurs :
dupes = dupes.filter(id_count__gt=1)
Copier après la connexion
  1. Récupérer les enregistrements complets : Pour obtenir les enregistrements complets, utilisez le filtre in pour sélectionner les lignes où le champ de nom correspond aux valeurs dupliquées :
dupes = Literal.objects.filter(name__in=[item['name'] for item in dupes])
Copier après la connexion

Solution SQL alternative :

Si préféré, vous pouvez également utiliser une sous-requête pour obtenir le même résultat :

SELECT *
FROM literal
WHERE name IN (
    SELECT name
    FROM literal
    GROUP BY name
    HAVING COUNT(*) > 1
);
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal