我用的是自定义id,如何获取文章的上一篇,下一篇?

解决方案 »

  1.   

    CREATE TABLE TA (ID INT IDENTITY(1,1),fileid int,filenam varchar(50),userid varchar(30),folderid int, filecontent varchar(50))
    INSERT INTO TA(fileid,filenam,userid,folderid,filecontent)
    SELECT 1,'aaa','11',60,'ntextt' UNION ALL
    SELECT 2,'bbb','11',60,'ntextt' UNION ALL
    SELECT 3,'bbb','11',60,'ntextt' UNION ALL
    SELECT 4,'ccccc','11',60,'ntextt' UNION ALL
    SELECT 5,'ddd','12',60,'ntextt' UNION ALL
    SELECT 6,'eeee','12',60,'ntextt' UNION ALL
    SELECT 7,'ffff','13',60,'ntextt' UNION ALL
    SELECT 8,'gggg','14',60,'ntextt' DELETE FROM TA WHERE ID=4
    DECLARE @ID INT
    SET @ID=5
    -------------上一个
    SELECT * FROM TA WHERE ID=(SELECT MAX(ID) FROM TA WHERE ID<@ID) 
    -------------下一个
    SELECT * FROM TA WHERE ID=(SELECT MIN(ID) FROM TA WHERE ID>@ID) 
      

  2.   

    declare @id as int
    set @id = '某数值'--上一个
    select * from tb t where id = (select top 1 from tb where id < @id order by id desc)--下一个
    select * from tb t where id = (select top 1 from tb where id > @id order by id )
      

  3.   

    --N-M紀錄
    1.
    select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入
    set rowcount n
    select * from 表变量 order by columnname desc
    2.
    select top n * from 
    (select top m * from tablename order by columnname) a
    order by columnname desc
    3.
    如果tablename里没有其他identity列,那么:
    select identity(int) id0,* into #temp from tablename取n到m条的语句为:
    select * from #temp where id0 >=n and id0 <= m如果你在执行select identity(int) id0,* into #temp from tablename这条语句的时候报错,那是因为你的DB中间的select into/bulkcopy属性没有打开要先执行:
    exec sp_dboption 你的DB名字,'select into/bulkcopy',true
    4.
    如果表里有identity属性,那么简单:
    select * from tablename where identitycol between n and m
      

  4.   

    select * from tb
    where id=(select max(id) from tb where id<@id)