select ArticleID, Subject
from Article 
where ArticleID in (select distinct top 10 ArticleID
                    from ArticleRelated
                    where KeywordID in (select KeywordID 
                                        from ArticleRelated 
                                        where ArticleID = @ArticleID
                                        )
                    and ArticleID <> @ArticleID
                    )
order by ABS(ArticleID-@ArticleID) desc

解决方案 »

  1.   

    select top 10 ArticleID, Subject
    from Article 
    where ArticleID in (select distinct ArticleID
                        from ArticleRelated
                        where KeywordID in (select KeywordID 
                                            from ArticleRelated 
                                            where ArticleID = @ArticleID
                                            )
                        and ArticleID <> @ArticleID
                        )
    order by abs(ArticleID-@ArticleID)
      

  2.   

    --创建测试数据
    select top 30 identity(int,1,1) as id
    into #tp
    from syscolumns c1,syscolumns c2 where 1=1--select * from #tpdeclare @i intset @i=8--查询SQL语句
    select *
    from #tp 
    where id in (select top 11 id from (select abs(id-@i) as C,id from #tp) T order by C)--删除临时表
    drop table #tp
      

  3.   

    我用Access的啊,不能用临时表,先研究一下先给分,多谢大家!!!!!!
      

  4.   


    --上面用临时表,只是创建测试数据,完全不用临时表select *
    from 表名
    where id in (select top 11 id from (select abs(id-@i) as C,id from 表名) T order by C)
      

  5.   

    多谢:wangtiecheng(不知不为过,不学就是错!) 指点。
    找到一点头绪,关键是order by abs(id-@i)的运用,继续研究