sql >> Databasteknik >  >> RDS >> Mysql

Hämta alla sekventiella block från en lista

Detta är ett sätt att göra det med hjälp av self-join och 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

Edit:Jag insåg att detta kunde göras med en enda fråga istället för att använda 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


  1. Använd Skapa uttalande för att skapa tabell i SQL Server - SQL Server / T- SQL Tutorial Del 34

  2. mysql ERROR 1064 (42000):Du har ett fel i din SQL-syntax;

  3. PostgreSQL-syntaxkontroll utan att köra frågan

  4. Hitta det senaste kontraktet för varje konto