mysql - MySQL查询以匹配精确值或下一个较低值
问题描述
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
什么样的查询最适合这个?
解决方案
您可以过滤第一列等于或小于参数的行,order by
该列中的降序值,并仅保留顶行,使用limit
.
假设过滤列被调用id
:
select *
from mytable
where id <= ?
order by id desc
limit 1
问号代表查询的参数。
推荐阅读
- c# - 是否可以在 IEntityTypeConfiguration 中引用相关实体
配置方法? - php - Phpspreadsheet 转换后的文件应具有包含相同值的附加新列
- c++ - 如何找到当前硬件线程的 L3 缓存索引和 NUMA 节点索引
- python - 使用字典值创建新列
- gstreamer - 使用 gstreamer 获得确定性时间
- c# - 列表框项目初始化,但一旦选择了一个,我不知道如何重置没有选择任何项目的列表框
- javascript - 如何运行每 30 秒调用一次 axios 的函数
- java - 使用毕加索从 Firebase 向 CardView 显示用户图像不起作用
- spartacus-storefront - 本地 Commerce-Spartacus 构建失败 - 无法加载 shrinkwap
- arangodb - How add new key with update in Arangodb