日期:2014-05-19  浏览次数:20387 次

问个简单的SQL查询

数据表dt
    ID           名             类别

    id           name         class
    1               a               c1
    2               b               c1
    3               c               c3
    4               d               c4
    5               6               c1
    7               j               c2
    10             k               c1
    .               .               ....
网页里面   想做两个连接   同类别的   一个是   [上一篇文章]   一个是   [下一篇文章]
例如:
  查询某一ID的时候
    select   *     from   dt   where   id=2   and   class=c1
    同时想得到

    下一个   同类别C1的id     上一个   同类别C1的id  

SQL语句如何写?分几步写?如何实现?高手指条明路吧。迷惘中。。。

------解决方案--------------------
select top 1 * from dt where class = 'c1 ' and id > 2 下一个
select top 1 * from dt where class = 'c1 ' and id < 2 desc 上一个
------解决方案--------------------
另外……如果你只是要做个上一篇下一篇的连接,不需要select *,你需要的只是一个id。

select top 1 id from...就可以了,这样效率高。
------解决方案--------------------
select top 1 a.id from dt a,(select id from dt where id=2 and class= 'c1 ') b
where a.class= 'c1 'and a.id <b.id
order by a.id desc
--上一个类别id
select top 1 a.id from dt a,(select id from dt where id=2 and class= 'c1 ') b
where a.class= 'c1 'and a.id> b.id
order by a.id asc
--下一个类别id
--常量2和 'c1 '可以在程序中用变量代替