Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Django Query onde um campo é duplicado e outro é diferente


Você pode trabalhar com uma subconsulta aqui, mas não importará muito em termos de desempenho, eu acho:
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 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)

Assim, mantemos UserNames objetos para os quais existe um UserNames objeto com o mesmo first_name , e com um user_id diferente .