select * from table as t1 where id in(select top 10 id from table as t2 where t1.kind = t2.kind) order by kind
id是table表的主键,kind是类别,这条命令返回的是每个类别的前10条记录,不明白为什么子查询中用kind做关联会返回每个类别top n的记录

解决方案 »

  1.   

    这种写法结果可以理解为group后取top
      

  2.   

    你可以理解为子查询是查询出每个kind的前十个id,然后在外边查询按照where id in这个条件来筛选记录。
      

  3.   

    也可以理解为  table1 join table1 然后让id 在前10位的,
     t1.kind = t2.kind 为了保证前10是每个类别的前10
      

  4.   

    http://topic.csdn.net/u/20090706/07/4f4ac7cc-315b-400d-87d9-dcd0a330ea96.html
      

  5.   

    子查询
    select top 10 id from table as t2 where t1.kind = t2.kind
    怎么就能保证返回每个kind的前10呢?
      

  6.   

    我的意思是,怎么能保证返回“每个kind”的前N呢?就是不理解t1.kind = t2.kind为什么能返回每个kind的记录