sql >> Base de Datos >  >> RDS >> Mysql

Obtener todos los bloques secuenciales de una lista

Esta es una forma de hacerlo usando auto-unión y union .

select t1.val
from t t1
join t t2 on t1.val = t2.val-1
union
select t2.val
from t t1
join t t2 on t1.val = t2.val-1
order by 1

Editar:me di cuenta de que esto se podía hacer con una sola consulta en lugar de usar union .

select distinct t1.val
from t t1
join t t2 on t1.val = t2.val-1 or t1.val = t2.val+1
order by 1