我在 PostgreSQL 中有一个带有一个数字列的表,并且我有一个给定的数字x
。
如果x
在表中,我想要所有数字>= x
。
如果x
不在表中,我想要所有数字> x
和最大的数字< x
。
例子:
id
5
10
15
20
因为x = 15
它应该返回15
and 20
。
因为x = 12
它应该返回10
,15
和20
。
我尝试了以下方法:
SELECT id FROM table_name WHERE id > 12
UNION
SELECT MAX(id) FROM table_name WHERE id <= 12
哪个工作正常。
有没有单查询方式?谢谢你。
(这只是一个单列和数字的例子。实际是更大的表和日期时间列,但原理应该是一样的。)