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
问号表示查询的参数。
一个 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
问号表示查询的参数。