表是这样的: 
文件表:                    文件与审核人对应表:              审核人表: 
文件id 用户id                  文件id        审核人id    审核人id 审核人名 
id  sysuserid            id  docomexam_id    sysuser_id      id    uname 
1    2                  1        2              123        123    晨晨 
2    3                  2        3              123        124    兰兰 
3    4                  3        2              124        125    咪咪  
4    3                  4        5              123        126    嘟嘟  
5    3                  5        3              124 
6    4                  6        2              125 
7    2                  7        2              126 
8    3                  8        3              125 
9    4                  9        1              124 
10   4                 10        3              126 要求就是通过用户id查询出最近用过的10为审核人的id和姓名,因为每份文件可能用到很多个审核人,每两份文件用到是审核人可能有相同的,我想就是先把用户id对应的所有文件排序列出来,再查对应的前10为审核人。 

解决方案 »

  1.   

    select id,uname from(
      select c.id,c.uname,
        count(distinct b.sysuser_id)over(order by a.id desc)c
      from docomexam a,docomman b,sysusers c
      where a.id=b.docomexam_id
        and b.sysuser_id=c.id
        and a.sysuserid=4
     )
    where c<=10
    测试一下
    我这里没有测试数据
      

  2.   

    select id,uname from(
      select c.id,c.uname,
        count(distinct b.sysuser_id)over(order by a.id desc,b.id desc)c
      from docomexam a,docomman b,sysusers c
      where a.id=b.docomexam_id
        and b.sysuser_id=c.id
        and a.sysuserid=4
     )
    where c<=10
    稍改下