首页 > 解决方案 > 比较两个连续的行

问题描述

我有数据库表付款,如下所示

 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'

当我执行上述查询时,我没有得到任何结果。

标签: mysqlsql

解决方案


您可以尝试在此处使用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的单条剩余记录。


推荐阅读