Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

T-SQL; verwijder rijen in een bestaande cursor

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.