表是这样的:
文件表: 文件与审核人对应表: 审核人表:
文件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为审核人。
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
测试一下
我这里没有测试数据
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
稍改下