mysql - 比较两个连续的行
问题描述
我有数据库表付款,如下所示
level_count | amount
__________________________
650 | 12
1000 | 35
1700 | 50
__________________________
现在想检查我是否将输入提供为 650,即 level_count 列值。然后我应该得到数量为 12。然后如果我提供输入为 999,我仍然应该得到 12。意味着它应该比较它的连续行并进行比较。假设如果我输入 1200,那么我应该得到 35,如果我输入 1700 或以上,我应该得到 50。我试过流动但没有成功。
我要去哪里错了。
SELECT * FROM payment T1
INNER JOIN payment T2 on T1.level_count>=T2.level_count AND T1.level_count<T2.level_count
WHERE T1.level_count = '650'
当我执行上述查询时,我没有得到任何结果。
解决方案
您可以尝试在此处使用LIMIT
查询:
SELECT *
FROM payment
WHERE level_count <= 999 -- or 650, or another input value
ORDER BY level_count DESC
LIMIT 1;
上述查询的逻辑分为两部分。首先,该WHERE
子句删除所有level_count
大于输入值的记录。但这仍然给我们留下了不止一个记录(包括我们真正想要的记录)。然后这个LIMIT
技巧保持最高 level_count
的单条剩余记录。
推荐阅读
- c++ - 将 C 样式字符串 char * 传递给函数参数
- java - tomee 不会从 Eclipse 中开始
- reactjs - 带有 react-router-dom NavLinks 的 react-bootstrap 导航栏中的 collapseOnSelect
- java - 在java中写入文件后日语字符变为垃圾
- freebsd - 在 macOS 上运行带有 QEMU 的 FreeBSD:系统在启动几秒钟后变得非常慢
- ios - 在没有按钮的 SwiftUI 中呈现新视图
- c - 交错的 usleep() 函数一起执行。这是编译器优化吗?
- oracle - 用于返回行或 rowid 的 Oracle PL/SQL 函数
- batch-file - 如何修复“错误:系统无法找到指定的注册表项或值。” 运行批处理文件时
- openapi - When using openapi-generator can you customize method name generation for C# client