django-查询与给定值最接近的数值

django-查询与给定值最接近的数值,django,absolute,Django,Absolute,我有一个游戏的django模型级别 class Level(models.Model): key = models.CharField(max_length=100) description = models.CharField(max_length=500) requiredPoints = models.IntegerField() badgeurl = models.CharField(max_length=100) challenge = models.ForeignKey(Chall

我有一个游戏的django模型级别

class Level(models.Model):

key = models.CharField(max_length=100)
description = models.CharField(max_length=500)
requiredPoints = models.IntegerField()
badgeurl = models.CharField(max_length=100)
challenge = models.ForeignKey(Challenge)
现在我想查询具有小于给定值的pointsRequired值的最高级别

如果我有:

一级:要求分数:200 二级:必修分数:800 三级:要求分数:2000

当我输入例如900或1999作为查询参数时,我希望返回级别2,当输入10000时,应返回级别3

在sql中,它看起来像

select   pointsRequired,
abs(pointsRequired - parameter) as closest
from     the_table
order by closest
limit 1

有什么建议吗?我必须用一个电话吗?它看起来怎么样?我认为您的SQL不正确。如果参数为1999,则应返回“level 3”。根据您的描述,SQL可能是:

select   pointsRequired,
abs(pointsRequired - parameter) as closest
from     the_table
order by closest
limit 1
SELECT pointsRequired FROM the_table WHERE pointsRequired < parameter ORDER BY pointsRequired DESC LIMIT 1;