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

MySQL query to match exact value or next lower value

一个 PHP 脚本 returns 必须在 MySQL 数据库的 table 的第一列中查找的值。

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

如果脚本值未出现在第一个 table 列中,则应从下一个最低值(如果存在)中提取相同的信息。

所以数据库中的行看起来像这样,第一列中有目标查找值:

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

哪种查询最适合这个?

您可以筛选第一列等于或小于参数的行,order by 该列中的降序值,并仅保留第一行,使用 limit.

假设过滤列名为id:

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

问号表示查询的参数。