0

我想编写一个 sql 查询,它返回所有大于或等于 x 的值以及不大于 x 的第一个值。

例如,如果我们有一个包含值 1、2、3、4、5 且 x 为 3 的表,我需要返回 2、3、4、5。

我的示例包含均匀间隔的整数这一事实无济于事,因为我的实际数据不那么合作。

这甚至可能吗,还是我最好只获取整个表并手动确定我需要哪些行?

4

3 回答 3

3
SELECT <columns>                   -- you want in the result
FROM tableX
WHERE columnX >=
      ( SELECT MAX(columnX)
        FROM tableX
        WHERE columnX < @x         -- @x is the parameter, 3 in your example
      ) ;
于 2013-09-23T16:25:41.307 回答
2

工会是你最好的选择。将所有大于 x 的值和小于 x 的最大值的集合粘贴在一起。像下面这样的东西应该可以工作:

SELECT n FROM table WHERE n > $x ORDER BY n DESC
    UNION SELECT n from table WHERE n < $x ORDER By n DESC LIMIT 0,1;
于 2013-09-23T16:26:53.843 回答
1
SELECT * FROM MyTable WHERE MyColumn >= 3
UNION
SELECT * FROM MyTable WHERE MyColumn < 3 ORDER BY MyColumn DESC LIMIT 1
于 2013-09-23T16:27:20.020 回答