当我传递一个数字时如何获得最近的id

时间:2014-04-29 05:17:12

标签: sql sql-server

我有一张桌子

id
---
10
20
30
40

如果我在11-29 30之间传递数字,我希望得到输出20,如果我在21-29之间传递数字

我该怎么做?

3 个答案:

答案 0 :(得分:11)

请试试这个

select min(id) from your_table where id >= your_number_value

希望这有帮助:)

答案 1 :(得分:1)

选择id大于输入的位置,选择top 1,然后按id升序排序

所以

SELECT TOP 1 Id
FROM <YOUR TABlE>
WHERE ID >= <INPUT>
ORDER BY ID ASC 
--specifying asc is essentially irrelevant as it's default, but it's nice to show intent.

如果您的输入介于11到19之间,那么这应该给你20

答案 2 :(得分:-1)

让我们说要传递的数字是变量&#39; var_num&#39;。

尝试类似于此 -

SELECT id
FROM table_name
WHERE id = CASE 
     WHEN (var_num % 10) > 0
         THEN (var_num - (var_num % 10)) + 10
     ELSE
         var_num
     END;

如果通过11-19,则返回20,如果20本身通过,则返回20。