select top 10 * from
(
  SELECT * FROM v_TaskQueue t WHERE ID IN (SELECT top 1 id fROM v_TaskQueue WHERE orderid = t.orderid) 
) m
order by orderid

解决方案 »

  1.   

    select B.* from (select orderid,min(ID) Id
    from  v_TaskQueue
    Group by orderID) A,v_TaskQueue B
    where A.ID=b.ID这样的效率如何?有建索引效率会更快些
      

  2.   

    select a.ID,a.orderID,b.typevalue from (select top 10 orderid,min(ID) Id
    from  v_TaskQueue
    Group by orderID) A,v_TaskQueue B
    where A.ID=b.ID
    刚写错了饿``不过,好象潇洒老乌龟 的写法挺不错,具体可以分析下
      

  3.   

    SELECT top 10   * 
    FROM   v_TaskQueue   t 
    WHERE   ID   IN   (SELECT     top   1   id   fROM   v_TaskQueue   WHERE   orderid=t.orderid) 
    order by id 
      

  4.   

    潇洒老乌龟的写法是有点帅
    但是,我测了一下,用top 10速度还行,top子16开始,就非常非常的慢了,不知道是我表结构有问题,还是索引没建好select top 20 * from
    (
      SELECT * FROM v_TaskQueue t WHERE ID IN (SELECT top 1 id fROM v_TaskQueue WHERE orderid = t.orderid) 
    ) m
    order by orderid倒是小鸟~的写法运行速度蛮快的,对于上W的数据运行速度只有1秒/