可以结合limit实现,相当于分页。
....WHERE date='dateVal' AND index<'indexVal' ORDER BY index ASC LIMIT 1; #上一条
....WHERE date='dateVal' AND index>'indexVal' ORDER BY index ASC LIMIT 1; #下一条

解决方案 »

  1.   

    下一条select * from tblsale where index>传的index值 and  date> 传的date值 order by date, index asc|desc上一条select * from tblsale where index<传的index值 and  date<传的date值 order by date, index asc|desc
      

  2.   

    首先判断有没有上一条、下一条,然后上一条就是ID<制定值,ID>制定值等条件,TOP 1、limit 1查询一条记录。
      

  3.   

    看了回复,我觉得我前面少说了点东西。
    关于上一单、下一单,我们要考虑一种极端情况,我以上一单为例说一下:
    一般情况下,所谓上一单就是date不变的情况下,index-1(考虑充分一点,万一index不连贯,就取比index小一点的),但是,如果index本来就是那一天最小的呢?这时,就要考虑到date先选前一天的(如果前一天没有,则要选再前一天的),然后在date固定的情况下,选index最大的一个
    下一单也是类似的道理。
    麻烦就麻烦在这里。
      

  4.   

    其实你补充的这些,实际上已经是舍弃了index这个条件。
    那你这个就得结合程序去实现了,以上一单为例如下:
    $sql = "SELECT date, index FROM table WHERE date='dateVal' AND index<'indexVal' 
        ORDER BY index ASC LIMIT 1";
    $result = mysql_query($sql);
    $row = mysql_fetch_row($result); //这里是正常情况,既有值
    if(empty($row)){ //所谓的极端情况来了。。,既上一个有单日期的最后一单
        $sql = "SELECT date, index FROM table WHERE date<'dateVal' 
            ORDER BY date,index DESC LIMIT 1";
        $result = mysql_query($sql);
        $row = mysql_fetch_row($result);
    }
    print_r($row);