我有一个表ObjectDetails
objectId | DeptID | workDate | percentage
-----------------------------------------------------------
1 1 06/07/16 10:10:10 10%
2 1 07/07/16 11:11:10 20%
3 2 06/07/16 09:10:10 5%
4 2 07/07/16 08:10:10 3%
5 3 06/07/16 10:10:10 15%
6 4 07/07/16 11:10:10 20%
你能帮我找一个获得条件的sql查询吗? 如果我给输入2,那么结果查询应返回前4行,这意味着2个部门。
预期产出:
objectId | DeptID | workDate | percentage
-----------------------------------------------------------
1 1 06/07/16 10:10:10 10%
2 1 07/07/16 11:11:10 20%
3 2 06/07/16 09:10:10 5%
4 2 07/07/16 08:10:10 3%
如果我给输入4,那么结果查询应该返回前4行,这意味着4个部门。
预期产出:
objectId | DeptID | workDate | percentage
----------------------------------------------------------
1 1 06/07/16 10:10:10 10%
2 1 07/07/16 11:11:10 20%
3 2 06/07/16 09:10:10 5%
4 2 07/07/16 08:10:10 3%
5 3 06/07/16 10:10:10 15%
6 4 07/07/16 11:10:10 20%
非常感谢。
答案 0 :(得分:0)
你似乎总是从第一个id开始,deptids很方便地分组,所以这可能会这样做
drop table if exists t;
create table t(id int auto_increment primary key, deptid int);
insert into t (deptid) values
(1),(1),(2),(2),(3),(4);
select id,deptid
from
(
select t.id,t.deptid,s.maxid,s.rn
from t
join
(
select deptid, max(id) maxid,@rn:=@rn+1 rn
from t,(Select @rn:=0) r
group by deptid
) s
on s.deptid = t.deptid
) u
where u.rn <= 2;
结果
+----+--------+
| id | deptid |
+----+--------+
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
| 4 | 2 |
+----+--------+