MySQL查询以匹配精确值或下一个更低的值

MySQL查询以匹配精确值或下一个更低的值,mysql,sql,sql-order-by,where-clause,sql-limit,Mysql,Sql,Sql Order By,Where Clause,Sql Limit,PHP脚本返回的值必须在MySQL数据库表的第一列中查找 如果脚本返回的确切值出现在第一个表列中,则查询需要从该行的其他列中提取进一步的信息 如果脚本值没有出现在第一个表列中,那么应该从下一个最低值(如果存在)中提取相同的信息 因此,数据库中的行如下所示,目标查找值位于第一列: 18 0.3783 0.4438 0.5155 0.5614 0.6787 19 0.3687 0.4329 0.5034 0.5487 0.6652 20 0.3598 0.4227

PHP脚本返回的值必须在MySQL数据库表的第一列中查找

如果脚本返回的确切值出现在第一个表列中,则查询需要从该行的其他列中提取进一步的信息

如果脚本值没有出现在第一个表列中,那么应该从下一个最低值(如果存在)中提取相同的信息

因此,数据库中的行如下所示,目标查找值位于第一列:

18  0.3783  0.4438  0.5155  0.5614  0.6787
19  0.3687  0.4329  0.5034  0.5487  0.6652    
20  0.3598  0.4227  0.4921  0.5368  0.6524    
25  0.3233  0.3809  0.4451  0.4869  0.5974    
30  0.2960  0.3494  0.4093  0.4487  0.5541
如果返回的脚本值为
25
,则同一行中的其他五个值:

0.3233 0.3809 0.4451 0.4869 0.5974
…应该提取

但是,如果脚本值为
24
,则需要提取具有下一个最低值的行信息,即数据库第一列值
20
,即:

0.3598 0.4227 0.4921 0.5368 0.6524

什么样的查询最适合这种情况?

您可以对第一列等于或小于参数的行进行筛选,
按该列中的降序值排序,并使用
限制
仅保留顶行

假设筛选列被称为
id

select *
from mytable
where id <= ?
order by id desc
limit 1
选择*
从mytable

我在一个很小但很重要的技术点上,这看起来像一张表我一直在想这个问题,我有一个完全相同的问题,但出于某种原因我认为它有缺陷。但是我不知道为什么这个问题被认为是“不诚实的”。@nev:同意,我认为这个评论是不公平的。