我有一张这样的桌子
AB ------------ 1.2 2.3 2.3 3.9 3.9 4.34 4.34 5.786
数据的意思是 1.2-5.786 是某个表的长度,1.2-2.3 有一些属性 2.3-3.9 有一些属性等等......但是当你认为它是整个表的长度时,1.2 - 5.786(对于这里的例子)。
我想运行一个查询,它会给我两个值之间的行:例如:
A = 1.1 和 B = 4.234
我很难弄清楚如何编写查询,我写的大多数查询都遗漏了一些边缘情况。
我有一张这样的桌子
AB ------------ 1.2 2.3 2.3 3.9 3.9 4.34 4.34 5.786
数据的意思是 1.2-5.786 是某个表的长度,1.2-2.3 有一些属性 2.3-3.9 有一些属性等等......但是当你认为它是整个表的长度时,1.2 - 5.786(对于这里的例子)。
我想运行一个查询,它会给我两个值之间的行:例如:
A = 1.1 和 B = 4.234
我很难弄清楚如何编写查询,我写的大多数查询都遗漏了一些边缘情况。
这似乎运作良好:
select *
from yourtable
where (b > 1.1 and a <= 4.234)
基本上确保 b 大于下限并且 a 小于或等于上限。根据您想要的结果,您可能需要更改b >
为b >=
.
例如,如果您想要介于两者之间的值,A =1.1 amd B = 4.234
则输出为
A B
1.2 2.3
2.3 3.9
那么查询是:
SELECT * from my_table WHERE A>=1.1 AND B<=4.234
但是如果你想要输出
A B
1.2 2.3
2.3 3.9
3.9 4.34
然后你想要查询
SELECT * FROM my_table WHERE A >= 1.1 AND A < 4.234 B > 4.234
听起来你想要
SELECT a, b
FROM my_table
WHERE A >= 1.1 AND B <= 4.234
OR A >= 1.1 AND A < 4.234
OR B > 1.1 AND B <= 4.234
这假设 A 总是 < B