sql查询 - 拉2行

时间:2011-06-30 18:41:10

标签: sql

  

可能重复:
  sql - query between 2 rows

抱歉,我很难修改上一个问题。我想 我可能不正确地形成了我的问题......再一次是新问题。 我正在做一个我需要抓2行的选择。 我的值为13000.00000(范围)。我需要抓住第2行和第3行 落在10000(最小范围)和15000(最小范围)之间

这句话只是第2行。

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

谢谢!

4 个答案:

答案 0 :(得分:1)

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

  • 返回与小于输入范围的最大值范围对应的行
  • 返回与输入范围以外的最小值范围对应的行。

    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)
    

答案 1 :(得分:1)

这是两个问题:

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

答案 2 :(得分:1)

select * from table1 where range in 
(
select max(range) from (select range from table1 where range<13000)
union
select min(range) from (select range from table1 where range>13000)
)

答案 3 :(得分:0)

您是否尝试将最接近的两个值发现到另一个值(即两个接近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;