有没有人能跟我讲一下top 的原理,为什么不是顺序读
select top 15 tt.id from (select top 15 a.id from emlinfo a order by a.id) tt 
select top 15 id from emlinfo
为什么结果会不一样
在线等请教

解决方案 »

  1.   

    第一个是按a.id排序的前15条,后一个是未排序的前15条
      

  2.   

    第二局修改为:
    select top 15 id from emlinfo order by id
    试一下!
     
      

  3.   

    两条语句等价于
    select top 15 a.id from emlinfo a order by a.id

    select top 15 id from emlinfo
      

  4.   

    select top 15 tt.id from (select top 15 a.id from emlinfo a order by a.id) tt  
    --这个按照 id排序 之后取出前15条
    select top 15 id from emlinfo
    --这个没有排序直接取前15条
      

  5.   

    select top 15 tt.id from (select top 15 a.id from emlinfo a order by a.id) tt 
    select top 15 id from emlinfo order by ID--加上排序
      

  6.   

    你这样
    SELECT * FROM emlinfo SELECT * FROM emlinfo ORDER BY A.ID看这两个输出一样不一样,如果不一样分别取前15肯定也不一样了
      

  7.   

    SELECT * FROM emlinfo  SELECT * FROM emlinfo ORDER BY A.ID是一样的
    SELECT top 15 id FROM emlinfo  SELECT top 15 id FROM emlinfo ORDER BY ID
    不一样怎么回事
      

  8.   

    那也可能,不加ORDER BY的TOP输出是无序的,无法保证输出次序
      

  9.   

    SQLSERVER 2000 安装包邮没有?