sql >> Databasteknik >  >> RDS >> Sqlserver

SQL reviderar tabelldata till en mer kompakt form

declare @t table(Id1 int, Id2 int)
insert @t values (100, 50)
insert @t values (    120,    70)
insert @t values (    70,     50)
insert @t values (    34,     20)
insert @t values (    50,     40)
insert @t values (    40,     10)

;with a as
(
-- find all rows without parent <*>
select id2, id1 from @t t where not exists (select 1 from @t where t.id1 = id2)
union all -- recusive work down to lowest child while storing the parent id1 
select t.id2 , a.id1
from a
join @t t on a.id2 = t.id1
)
-- show the lowest child for each row found in <*>
select id1, min(id2) id2 from a
group by id1

Resultat:

id1         id2
----------- -----------
34          20
100         10
120         10



  1. Hämtar UTC DATETIME-fältet från MySQL i Java när serverns tidszon inte är UTC

  2. Hur använder man LOAD_FILE för att ladda en fil till en MySQL-blob?

  3. Indexering av booleska fält

  4. Hur får man kategorier och underkategorier Query Builder i Laravel