MySQL查询获取数据

时间:2017-11-01 04:08:31

标签: mysql

我有一个表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%

非常感谢。

1 个答案:

答案 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 |
+----+--------+