sql查询-拉取2行

sql查询-拉取2行,sql,Sql,可能重复: 对不起,我很难修改之前的问题。我想 我的问题可能不正确……这又是一个新问题。 我正在选择需要抓取2行的位置。 我的值范围为13000.00000。我需要抓住第2行和第3行,因为 介于10000分钟范围和15000分钟范围之间 这句话只引申到第二行 select * from TABLE1 where 13000 ?? range; TABLE1 Row range return_value 1 0.00000 1.15 2 1

可能重复:

对不起,我很难修改之前的问题。我想 我的问题可能不正确……这又是一个新问题。 我正在选择需要抓取2行的位置。 我的值范围为13000.00000。我需要抓住第2行和第3行,因为 介于10000分钟范围和15000分钟范围之间

这句话只引申到第二行

select *
from TABLE1
where 13000 ?? range;


TABLE1
Row     range       return_value
1       0.00000     1.15
2       10000.00000     1.25
3       15000.00000     1.35
4       20000.00000         1.14

谢谢

似乎您需要同时执行以下两项操作

返回与最大值小于输入范围的范围对应的行 返回与大于输入范围的最小值范围相对应的行

SELECT *    
FROM TABLE1 
WHERE Range = (select MAX(range) from table1 subt1 where subt1.range < 13000)
     OR Range = (select MIN(range) from table1 subt1 where subt1.range > 13000)

这里有两个查询:

SELECT TOP 1 * from TABLE1 where range < 13000 ORDER BY range desc;
SELECT TOP 1 * from TABLE1 where range > 13000 ORDER BY range asc;

您是否试图找到与另一个值最接近的两个值,即接近13000的两行?或者,您正在尝试查找10000到15000之间的任意两行?15000值上的标签是否应为最大范围。如果是这样的话,那么我不清楚13000这个数字

如果是后者,那么这将起作用

select top 2 * from TABLE1 where range between 10000 and 15000
这将返回两行,但不区分哪一行在该范围内。如果你需要更具体一些,纳尼安的答案是一个更好的解决方案

或者,您可以使用Paul的语句,将两个select语句组合成一个union语句:

SELECT TOP 1 * from TABLE1 where range < 13000 ORDER BY range desc
Union
SELECT TOP 1 * from TABLE1 where range > 13000 ORDER BY range asc;

从表1中选择*范围<16000或范围>90000对不起,我还不明白。也许您想看看SQL中的“where something”位?
SELECT TOP 1 * from TABLE1 where range < 13000 ORDER BY range desc
Union
SELECT TOP 1 * from TABLE1 where range > 13000 ORDER BY range asc;