webForumDet fria alternativet

Nöt: Unika såtillvida att de inte ligger brevid varandra?

Databaser & SQL

4 svar · 559 visningar · startad av Travoni

Medlem sedan okt. 20041 556 inlägg
Frågan#1

Tänk er att jag har en tabell som ser ut så här:

1  Ulf
2  Arne
3  Kalle
4  [B]Sven[/B]
[red]5  Sven
6  Sven[/red]
7  Åke
8  Åsa
9  Knut
10 [B]Sven[/B]
11 Ulla
12 [B]Britt[/B]
13 [red]Britt[/red]
14 Kent
15 [B]Britt[/B]

Då vill jag bara ta bort de dubletter som ligger bredvid varandra, alltså sven och britt återkommer men då ligger de inte i "klump", hur gör jag det med mysql?

Medlem sedan dec. 20025 483 inlägg
#2
select id
     , name
  from tbl t
 where
not exists
       ( select 1
           from tbl
          where name = t.name
            and id = t.id-1 )
order
    by id
Medlem sedan okt. 20041 556 inlägg
#3

Snyggt jobbat Peter, funka riktigt smutt. :)

/R

Medlem sedan dec. 20025 483 inlägg
#4

Man skulle i och för sig kunna tänka sig ett scenario där id-numren ej är kontinuerliga, d.v.s. att 1 och 3 existerar men ej 2. I detta fall kommer ovanstående ej att fungera. Ovanstående kod kan då ersättas med

select id
     , name
  from tbl t
 where name
not in ( select name
           from tbl
          where id
              = ( select max(id)
                    from tbl
                   where id < t.id ) )
Medlem sedan juni 200032 967 inlägg
#5

Flyttas från databashanterare.

mvh

253 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)