我想根据一个编号,来获得数据库的上下两条数据,目的是获取上下篇文章虽然分开读取很容易就实现,但是我想试下一次读取就可以获得比如说表:A
字段:B
字段B有的数据是:1 2 3 4 5 6 7 8 9 那么我当前选择的是5 我想获得4 6 这两个最接近5的值。应该怎么处理?SQL要怎么写?

解决方案 »

  1.   

    没必要想一次取出来  简单点就 union  一下  两条结果都出来了
      

  2.   

    CREATE TABLE tb_t(id INT)INSERT INTO tb_t VALUES (1)
    INSERT INTO tb_t VALUES (2)
    INSERT INTO tb_t VALUES (6)
    INSERT INTO tb_t VALUES (8)
    INSERT INTO tb_t VALUES (12)
    SELECT * FROM tb_t
    CREATE PROCEDURE p_GetTest
    (
    @tid int
    )ASSELECT 
    ISNULL((SELECT MAX(id) FROM tb_T WHERE id<@tid),'-9999') AS '上一篇',
     @tid as '当前',
    ISNULL((SELECT min(id) FROM tb_T WHERE id>@tid),'-9999') AS '下一篇'
    EXECUTE p_GetTest 6--2 6 8
      

  3.   

    下一篇select top 1 * from table1 where id>@id order by id   
    上一篇select top 1 * from table1 where id <@id order by id desc
    或使用LINQ 排序skip,take(1)
     
     
      

  4.   

    select max(P_ID) from KD_Product where P_ID<255 union
    select min(P_ID) from KD_Product where P_ID>255 
      

  5.   


    --上面的都说得差不多了,也可以放在一个存储过程里面--
    select top 1 * from Blog_Users where U_id<32 order by U_id desc 
    select top 1 * from Blog_Users where U_ID>32 order by U_ID asc
    //然后用SqlDataReader的NextResult获取
      

  6.   

    select top 1 * from A where AID>32 order by aID 
      

  7.   

    select top 1 * from test where id <4 order by id desc
    or 
    select top 1 * from test where id>4 order by id desc
      

  8.   


    --上一篇文章
    select top 1 * from tb where id<@id order by id desc--下一篇文章
    select top 1 * from tb where id>@id order by id desc