Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Django-Abfrage, bei der ein Feld doppelt und ein anderes anders ist

Sie können hier mit einer Unterabfrage arbeiten, aber es wird nicht viel in Bezug auf die Leistung ausmachen, denke ich:

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

oder vor :

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)

Wir behalten also UserNames Objekte, für die ein UserNames existiert Objekt mit demselben first_name , und mit einer anderen user_id .