Vraag & Antwoord

Programmeren

T-SQL; verwijder rijen in een bestaande cursor

Anoniem
None
2 antwoorden
  • Hoi allen,

    Ik heb de volgende tabel:

    [code:1:62485a220b]
    Naam Naam2
    bert burger
    burger bert
    janssen piet
    piet janssen
    [/code:1:62485a220b]

    Ik wil hier 'gespiegelde' duplicates verwijderen door gebruik te maken van de volgende cursor:

    [code:1:62485a220b]
    DECLARE @Naam as varchar(50)
    DECLARE @Naam2 as varchar(50)
    DECLARE c1 CURSOR FOR
    select naam, naam2
    from #tmp
    for update
    OPEN c1
    FETCH NEXT FROM c1
    into @Naam, @naam2
    WHILE @@FETCH_STATUS = 0
    BEGIN

    delete from #tmp
    where (@naam = naam2 and @naam2 = naam)
    END
    fetch next from c1 into @naam, @naam2
    CLOSE c1
    DEALLOCATE c1
    [/code:1:62485a220b]

    Echter wordt hier mijn hele #tmp tabel verwijderd.
    Weet iemand hoe ik de cursur zo kan instellen dat het "delete from" statement effect heeft op de fetch van de cursor?

    Bedankt!
  • Dat kan je toch eenvoudiger oplossen? Door de tabel aan zichzelf te joinen met als voorwaarde dat de waardes gespiegeld zijn, de plekken waar je een match hebt, die moeten weg.

    Dus zoiets

    DELETE FROM tabel WHERE id in (
    SELECT
    t2.id
    FROM
    tabel1 t1
    INNER JOIN tabel 2 t2 ON t2.naam1 = t2.naam2 AND t2.naam2 = t1.naam1
    )

    Ik ga er nu vanuit dat je een id veld hebt, heb je dat niet dan kan het ook maar moet je het iets anders aanpakken..

    Gaat dat lukken?

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.