要考虑到当前如果是第一篇或者最后一篇的时候
还有中间有不连续的id情况

解决方案 »

  1.   


    # 上一篇
    select * from t where id > current_id limit 1#下一篇
    select * from t where id < current_id limit 1
      

  2.   

    其实这是一个对于sql语句的活用
    平常如果我们要查询一条记录的话
    那么就只要让id=$id,如:
    select * from t where id = current_id
    就可以查询出结果来:
    然后我们可以换个思路
    取数据库中排在他后面的记录就是
    id>$id
    然后取第一条就是以下的了
    select * from t where id > current_id limit 1
      

  3.   

    上下篇会增加了两条查询,可在最开始就直接读取3条新闻。select * from news where newsID in(select newsID from news where newsID >=12 limit 2) or newsID in(select newsID from news where newsID <12 order by NEWSID desc limit 1)结果0即当前新闻,结果1为上一条,结果2为下一条,如果为空则不存在。
      

  4.   


    你这个子查询 + or不见得比3条sql查询快到哪里去,sql的优化不是靠3句拼成一句,就叫优化了