解决方案 »

  1.   

    先查处id,再查大于和小于这个id的第一条记录,然后根据三个id去select * from xxx where id in (id1,id2,id3)
      

  2.   

    可以去SQL的版块去问。
    如果要这个效果,至少还要有一列,表示显示的顺序,如自增长的ID。
    如果内容是无序的,那只能一条一条记录的去判断。
    如果是有序的,就好查了。如要查“油炸蟹”,就先查到这条记录的ID,再找出小于这个ID的最大ID和大于这个ID的最小ID。
    大体上是这个思路。
      

  3.   

    嗯,,是有一列ID的,具体SQL语句怎么写?
      

  4.   

    select * 
    from T1 
    where ID between (select ID from T1 where Name='油炸蟹')-1 and (select ID from T1 where Name='油炸蟹')+1
      

  5.   

    那说明你相同Name的记录有多条,可以改下:
    select * 
    from T1 
    where ID between (select top 1 ID from T1 where Name='油炸蟹')-1 and (select top 1 ID from T1 where Name='油炸蟹')+1
      

  6.   

    ID不是主键吗?如果ID重复的话,这样也会有问题的。
      

  7.   

    嗯,修改后可以查出,顺便问一下:   DataModule2.GLCX.SQL.Add('select * from [表1] where ID between '+
       '(select top 1 ID from [RECORD] where Name ="'+ComboBox1.Text+'")-1 and '+
       '(select top 1 ID from [RECORD] where Name ="'+ComboBox1.Text+'")+1 ');却不能查询,如果用Edit就可以,为什么会这样?该如何修改?
      

  8.   

    DataModule2.GLCX.SQL.Add('select * from [表1] where ID between '+
       '(select top 1 ID from [RECORD] where Name ='''+ComboBox1.Text+''')-1 and '+
       '(select top 1 ID from [RECORD] where Name ='''+ComboBox1.Text+''')+1 ');
    那里不是用双引号,而是要用3个单引号