具有尽可能接近数字"x"的 MySQL 数据库结果集



我试图得到一个包含最接近数字3的10个值的结果集。

我有一个数据库,它在一个名为rated的列中有值,可以是1、2、3、4或5。我想做的是查询数据库并返回值最接近3的前10行。这些值可以高于3或低于3。我应该注意,评级列中的这些值是浮动的。

然后,我需要按顺序对这些行进行排序,以便值为3的行首先是值,然后是值为3偏移量(+/-)最小的行。

是否有任何SQL查询可以返回至少最接近3的值的结果集?还是我必须返回整个数据库并自己进行排序?

为了获得前10行中的最高值,我使用了语句

SELECT * FROM tabs ORDER BY 5 DESC LIMIT 10";

5表示列额定

有什么方法可以修改它来做我想做的事情吗?感谢

如果我正确理解你的问题,这应该会奏效:

select *
from tabs
order by abs(`rated` - 3) asc
limit 10

请注意,它按升序的差进行排序,因此差为0的将排在第一位。

SELECT * FROM tabs ORDER BY ABS(3 - Rate) ASC LIMIT 10

如果我做对了你需要的,请尝试:

select * 
from (
  select 
    case when -(3-rated) > 0 then -(3-rated) else (3-rated) end as distance, 
    tabs.*
  from tabs
) subsel 
order by distance 
limit 10

最新更新