试试下面的:select * from myTable 
 where  convert(char(10), CategroyID)+convert(char(20), CategoryTime)  in (
Select top 10 convert(char(10), CategroyID)+convert(char(20), CategoryTime) from myTable order by 1 desc)
ORDER BY CategroyID, CategoryTime DESC特佩服楼主的精神,向楼主学习!!!

解决方案 »

  1.   

    刚才发的sql是错误的,sorry
      

  2.   

    多加一个字段用以先组排序再组内排序select myTable.* from 
    (
    SELECT Top 10 '1' as id,myTable.*
    FROM myTable
    WHERE CategroyID=1
    UNIONSELECT Top 10 '2' as id ,myTable.*
    FROM myTable
    WHERE CategroyID=2
    UNIONSELECT Top 10 '3' as id ,myTable.*
    FROM myTable
    WHERE CategroyID=3
    )  A
    ORDER BY id,CategoryTime DESC,CategroyID 
      

  3.   

    SELECT Top 10 *
    FROM myTable
    WHERE CategroyID=1
    UNIONSELECT Top 10 *
    FROM myTable
    WHERE CategroyID=2
    UNIONSELECT Top 10 *
    FROM myTable
    WHERE CategroyID=3
    ORDER BY CategroyID  ,CategoryTime DESC
      

  4.   

    --对不起,写错,这样
    select * from
    (SELECT Top 2 *
    FROM myTable
    WHERE CategroyID=1
    order by CategoryTime desc)a
    UNIONselect * from 
    (SELECT Top 2 *
    FROM myTable
    WHERE CategroyID=2
    order by CategoryTime desc)a
    UNION
    select * from 
    (SELECT Top 2 *
    FROM myTable
    WHERE CategroyID=3
    order by CategoryTime desc)a
    ORDER BY CategroyID  ,CategoryTime DESC
      

  5.   


    select * from(
    SELECT Top 10 *
    FROM myTable
    WHERE CategroyID=1
    ORDER BY CategoryTime)a
    UNION all
    select * from(
    SELECT Top 10 *
    FROM myTable
    WHERE CategroyID=2
    ORDER BY CategoryTime)a
    UNION all
    select * from(
    SELECT Top 10 *
    FROM myTable
    WHERE CategroyID=3
    ORDER BY CategoryTime)a
      

  6.   

    参考这个帖子中,我的回复,和你的问题差不多http://community.csdn.net/Expert/topic/4033/4033458.xml?temp=.0923273