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

Comment écrire une sous-requête dans la clause From dans Django ORM

En effet, il n'est pas possible d'utiliser une Window requête dans un WHERE clause. Donc, à la place, utilisez une Subquery :

from django.db.models import OuterRef, Subquery

top_salaries = EmpSalary.objects.filter(
    depname=OuterRef('depname')
).order_by('-salary')[:3]
result = EmpSalary.objects.filter(
    pk__in=Subquery(top_salaries.values('pk'))
).values('depname', 'empno', 'salary', 'enroll_date')