sql >> Base de Datos >  >> RDS >> Mysql

Django Query donde un campo está duplicado y otro es diferente

Puede trabajar con una subconsulta aquí, pero creo que no importará mucho en términos de rendimiento:

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')
    ))
)

o antes de :

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)

Por lo tanto, conservamos UserNames objetos para los que existe un UserNames objeto con el mismo first_name , y con un user_id diferente .