在SQL中,您想要的实际上是
SELECt x/y, * FROM XYZ ORDER BY x/y DESC LIMIT 1;# Or more verbose version of the #1SELECt x/y, id, a, b, x, y FROM XYZ GROUP BY x/y, id, a, b, x, y ORDER BY x/y DESC LIMIT 1;# OrSELECt * FROM XYZ WHERe x/y = (SELECt MAX(x/y) FROM XYZ) LIMIT 1;
因此,在Django ORM中:
XYZ.objects.extra(select={'z':'x/y'}).order_by('-z')[0]# OrXYZ.objects.extra(select={'z':'x/y'}).annotate().order_by('-z')[0]# Or x/y=z => x=y*zXYZ.objects.filter(x=models.F('y') * XYZ.objects.extra(select={'z':'MAX(x/y)'})[0].z)[0]
版本号
XYZ.all().extra(select={'z':'MAX(x/y)'})[0].z
因为没有正确的X,Y和实例
MAX功能的所有行中进行评估,当没有
GROUPBY,因此在返回的查询集所有实例将具有相同价值
z的
MAX(x/y)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)