有表结构如下:id(int) start(int) end(int)
数据如下:id    start     end
1     33         45
2     46         78
3     79         101
4     102        232
5     235        324就是说,下一条记录的start永远是上一条记录的end我传入一个77,如果确定这个77是刚好位于79和101之间的id=3的这条记录。表记录在20W以上.

解决方案 »

  1.   

    77貌似应该位于46~78之间的ID=2的那条记录吧:
    select * from tb where @value between start and end
      

  2.   


    嗯,描叙错误。只传一个77,start end不可得。
      

  3.   

    select * from tb where 77 between start and end
      

  4.   

    create table tb(id int,start int,[end] int)
    insert into tb select 1,33,45
    insert into tb select 2,46,78
    insert into tb select 3,79,101
    insert into tb select 4,102,232
    insert into tb select 5,235,324
    go
    declare @value int
    set @value =77
    select * from tb where @value between start and [end]
    /*
    id          start       end
    ----------- ----------- -----------
    2           46          78(1 行受影响)*/
    go
    drop table tb
      

  5.   


    大大,假设只传入一个start和end的中间值,如何找到这条记录的位于哪个区间?