MySQL从多行中选择1行

时间:2015-02-20 08:28:44

标签: mysql

请建议从多个(0类型行)中获取单个0类型行,并且所选行应该在类型1行之前

Emp_tbl (id,type,company_id,created_at)

1,0,121,2015-02-19 18:05
2,0,121,2015-02-19 18:15
3,0,121,2015-02-19 18:17
4,1,121,2015-02-19 19:22
5,2,121,2015-02-19 19:25

6,0,121,2015-02-19 22:05
7,0,121,2015-02-19 22:15
8,0,121,2015-02-19 22:17
9,1,121,2015-02-19 22:22
10,2,121,2015-02-19 22:25

预期结果

3,0,121,2015-02-19 18:17
4,1,121,2015-02-19 19:22
5,2,121,2015-02-19 19:25


8,0,121,2015-02-19 22:17
9,1,121,2015-02-19 22:22
10,2,121,2015-02-19 22:25

1 个答案:

答案 0 :(得分:0)

所以你想要的是MAX(Id)每行type = 0 type = 1Id,其中select max(t0.Id) Id from Emp_tbl t1 join Emp_tbl t0 on t0.type = 0 and t0.Id < t1.Id where t1.type = 1 group by t1.Id 更少。您可以加入并分组以获得:

select *
from Emp_tbl
where type <> 0
union all
select t.*
from Emp_tbl t
join (
    select max(t0.Id) Id
    from Emp_tbl t1
    join Emp_tbl t0 on t0.type = 0 and t0.Id < t1.Id
    where t1.type = 1
    group by t1.Id
) t0 on t.Id = t0.Id

剩下的就是把它放在一起:

{{1}}

SQL Fiddle demo