Det här är ett slags luckor-and-öar-problem. Öar är intilliggande rader som har samma batchnum
, och du vill ha början på varje ö.
Här är förmodligen den enklaste metoden lag()
:
select *
from (
select e.*,
lag(batchnum) over(order by time) lag_batchnum
from example e
) e
where not lag_batchnum <=> batchnum
Observera att detta kräver MySQL 8.0. I tidigare versioner använder ett alternativ en korrelerad underfråga:
select e.*
from example e
where not batchnum <=> (
select e1.batchnum
from example e1
where e1.time < e.time
order by e1.time desc
limit 1
)
Här är en demo på DB Fiddle .