文章列表是按时间降序排列,
当我点击一篇文章后,我要显示下一篇和上一篇的标题链接,
请问怎么去使用SQL查询来实现

解决方案 »

  1.   

    类似分页查询  一次查3条记录存在一个list中! 当点击一个文章的时候发个SQL语句 把第一条和第3条的URL放在上一篇和下一篇的链接上select top 3 * from (select top id(点击文章的ID)+1 * from 表 order by id desc)
      

  2.   

    如果其中有文章被删除了,其id不存在了,那么如果是用hibernate查id ,可能会抛出异常
      

  3.   

    但如果不用hibernate 查id 的方式,查id+1或id-1都不存在
      

  4.   

    count是每页文件数
    page是页码
    begin = count * (page - 1);
    end = count * page;select * from 
    (select rownum, table.* from table
    where rownum <= end
    order by filedate desc)
    where rownum >= begin
      

  5.   

    但是,这个同时又有一个问题。
    就是 如果是时间相同了怎么办。
    我希望就是 根据时间和id排序
    如果时间相同 就去比id
    id是主键 永远不会重复。
      

  6.   

    查询id排序是一种情况,查询 时间 排序又是一种情况我想到了,不知道行不行,情况有些复杂。先查小于该文章时间的文章取第1篇(上一篇)再查大于该文章时间的文章取第1篇(下一篇)还要查本篇文章一次那么就要执行3次SQL,显然对服务器压力很大。
      

  7.   

    不好意思,刚看错了,将三次查询的语句用union连接,进行一次查询。
      

  8.   

    这个虽然是用到了3条sql语句。对服务器压力还是很小的。我写的分页 就是这样写的。
      

  9.   

    你说 时间不重复的话。
    那就更好了。
    不过 我觉得 
    插入的ID 和时间 顺序应该是一样的。
    如果用id按我说的方式去查 那就更快了。
    几百万的数据量都是秒杀
      

  10.   

    查询你大于当前id的第一条或者小于当前id的第一条不就行了,至于语句就要看你用的数据库了,mysql用limit,oracle用rownum,mssql用top,等
      

  11.   

    还有 执行的时候还是只执行一条语句。
    你点上一篇或者 点上一篇的时候才会执行一条SQL语句。
    何来的3条语句?