我有一张桌子:
id value1 value2
1 1 6
2 8 10
3 14 20
然后我有一个号码,让我们说x=7
。
我的查询应该找出x落在value1和value2之间的id。如果x不属于任何范围,请使用下一个ID。在我的情况下x=7
我得到id=2
。
我的猜测可以使用PostgreSQL中的窗口函数以某种方式完成,但也许有一个更简单的解决方案?
答案 0 :(得分:2)
select *
from t
where 7 <= v2
order by v1
limit 1
答案 1 :(得分:0)
我假设你真的想要一个可能的结果列表(如果x
匹配多行,你想要它们全部;否则只是最后一行)。鉴于此,我想到了以下解决方案:
SELECT CASE
WHEN
(
SELECT COUNT(*)
FROM table
WHERE x > value1
AND x < value2
) > 0
THEN
(
SELECT id
FROM table
WHERE x > value1
AND x < value2
)
ELSE
(
SELECT MAX(id)
FROM table
)
END AS my_ids