Mysql
 sql >> Base de données >  >> RDS >> Mysql

Django Query où un champ est en double et un autre est différent

Vous pouvez travailler avec une sous-requête ici, mais cela n'aura pas beaucoup d'importance en termes de performances, je pense :

from django.db.models import Exists, OuterRef, Q

UserNames.objects.filter(
    Exists(UserNames.objects.filter(
        ~Q(user_id=OuterRef('user_id')),
        first_name=OuterRef('first_name')
    ))
)

ou avant :

from django.db.models import Exists, OuterRef, Q

UserNames.objects.annotate(
    has_other=Exists(UserNames.objects.filter(
        ~Q(user_id=OuterRef('user_id')),
        first_name=OuterRef('first_name')
    ))
).filter(has_other=True)

Nous conservons donc les UserNames les objets pour lesquels il existe un UserNames objet avec le même first_name , et avec un user_id différent .