我想编写一个sql查询,它返回大于或等于x的所有值以及不大于x的第一个值。
例如,如果我们有一个包含值1,2,3,4,5且x为3的表,我需要返回2,3,4,5。
我的示例包含均匀间隔的整数这一事实无济于事,因为我的实际数据并不合情合理。
这是否可能,或者我最好只是获取整个表并手动确定我需要哪些行?
答案 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