gpt4 book ai didi

sql - 查找表中大于某个值的最小值

转载 作者:行者123 更新时间:2023-12-04 15:28:29 24 4
gpt4 key购买 nike

说我有以下数据

Name      Value
===============
Small 10
Medium 100
Large 1000

想象一下,这些代表盒子的体积。我有一些东西想放在盒子里,我想要尽可能小的盒子。我需要一个 SQL 查询,它将:
  • 返回最小行大于我的查询参数的行
  • 如果没有这样的行,则返回最大的行。

  • 很容易将其拆分为两个查询(即首先查询点 1,如果没有返回行,则从表中选择最大的数)。但是,如果可能的话,我喜欢在一个查询中做一些事情以消除开销(代码和上下文切换),而且看起来应该可以做到。这可能很明显,但是太阳一整天都照在我身上,我无法思考!

    例如,如果您使用 5 的参数,我希望查询返回 10,如果您使用 15 的参数,则返回 100,如果您使用大于 100 的任何值(包括大于 1000 的数字),我希望查询返回 1000。

    我使用的是 Oracle 11g,所以任何特殊的 Oracle 优点都可以。

    最佳答案

    SELECT  *
    FROM (
    SELECT *
    FROM (
    SELECT *
    FROM mytable
    WHERE value > 10000
    ORDER BY
    value
    )
    UNION ALL
    SELECT *
    FROM (
    SELECT *
    FROM mytable
    ORDER BY
    value DESC
    )
    )
    WHERE rownum = 1

    这将有效地使用 mytable(value) 上的索引和 COUNT(STOPKEY) .

    有关性能详细信息,请参阅我博客中的这篇文章:
  • Selecting lowest value
  • 关于sql - 查找表中大于某个值的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/769069/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com