Mysql
 sql >> Database >  >> RDS >> Mysql

Django Query in cui un campo è duplicato e un altro è diverso

Puoi lavorare con una sottoquery qui, ma non avrà molta importanza in termini di prestazioni, penso:

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 prima di :

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)

Conserviamo quindi UserNames oggetti per i quali esiste un UserNames oggetto con lo stesso first_name e con un diverso user_id .