【发布时间】:2010-10-20 14:57:40
【问题描述】:
假设我有以下数据
Name Value
===============
Small 10
Medium 100
Large 1000
想象这些代表盒子的体积。我有一些物品想放在盒子里,我想要尽可能小的盒子。我需要一个 SQL 查询:
- 返回最小行大于我的查询参数的行
- 如果没有这样的行,则返回最大的行。
很容易将其拆分为两个查询(即首先查询点 1,如果没有返回行,则从表中选择最大的数字)。但是,如果可能的话,我喜欢在一个查询中做一些事情以消除开销(代码和上下文切换),而且看起来应该可以做到。这可能很明显,但是太阳一整天都在照耀着我,我无法思考!
例如,如果您使用 5 的参数,我希望查询返回 10,如果您使用 15 的参数,则返回 100,如果您使用任何大于 100(包括大于 1000 的数字)的参数,则返回 1000。
我使用的是 Oracle 11g,所以任何特殊的 Oracle 优点都可以。
【问题讨论】: