如何从SQL给定值后获得下一个最小值

时间:2018-07-12 18:55:44

标签: php mysql sql mysqli phpmyadmin

好的,现在我正在开发一种系统,当客户延迟付款时,他们向分期付款金额增加利率。

示例: 假设客户将付款延迟了3天,现在公司在分期付款中又增加了2.5%,接下来说5天,然后是3.5%,就这样

+-------+------+------+---------------------+
| dd_id | rate | days | time                |
+-------+------+------+---------------------+
|     1 | 2.50 |    3 | 2018-07-12 23:42:11 |
|     2 | 3.50 |    5 | 2018-07-12 23:42:11 |
|     3 | 4.50 |    7 | 2018-07-12 23:42:11 |
|     4 | 5.50 |    9 | 2018-07-12 23:42:11 |
+-------+------+------+---------------------+

到目前为止,我已经能够使用此sql查询并以这种天数来检索一些数据

SELECT * FROM delaying WHERE days >= 5 LIMIT 1 

(5 =延迟天数)

现在的问题开始了,当延迟的天数超过表中的值时,它不返回任何值,我尝试更改符号,但随后返回了 3 。给定值(假设为 11 )之后,有什么方法可以检索最大的价值,那么它应该返回 9

1 个答案:

答案 0 :(得分:1)

首先,您的查询不正确。您需要一个order by

SELECT *
FROM delaying
WHERE days >= 5
ORDER BY days
LIMIT 1 ;

如果表不是很大,可以使用ORDER BY遵循类似的方法:

SELECT *
FROM delaying
ORDER BY (days >= 5) DESC, ABS(days - 5) ASC
LIMIT 1 ;