SQL下界?

时间:2013-09-23 16:21:52

标签: mysql sql

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

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

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

这是否可能,或者我最好只是获取整个表并手动确定我需要哪些行?

3 个答案:

答案 0 :(得分: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
      ) ;

答案 1 :(得分: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;

答案 2 :(得分:1)

SELECT * FROM MyTable WHERE MyColumn >= 3
UNION
SELECT * FROM MyTable WHERE MyColumn < 3 ORDER BY MyColumn DESC LIMIT 1
相关问题