22. september 2004 - 13:53Der er
10 kommentarer og 2 løsninger
Replace i MS SQL
Jeg er gået over fra mySQL til Ms SQL, men jeg mangler replace. hvordan gøre dette bedst, jeg har en tabel1 med værdier, den vil jeg opdatere på baggrund af tabel2, de poster i tabel2 som ikke er i tabel1 skal indsættes.
i mySQL kunne jeg bruge sql ="replace into tabel1 values tabel2"
hvordan gør jeg det i ms SQL??? eller kan den ikke det.
SELECT @idtabel2 = 0 WHILE 1 = 1 BEGIN SELECT @idtable2 = MIN(id) FROM table2 WHERE id > @idtabel2
IF @idtabel2 IS NULL BREAK
IF EXISTS ( SELECT * FROM tabel1 WHERE id = @idtabel2 ) BEGIN SELECT @felter (skal declareres) = tabelfelter (de felter der skal opdateres) FROM tabel2 WHERE id = @idtabel2
UPDATE tabel1 SET felter = @felter WHERE id = @idtabel2 END ELSE BEGIN INSERT INTO tabel1 SELECT xxx FROM tabel2 WHERE id = @idtabel2 END END
REPLACE works exactly like INSERT, except that if an old record in the table has the same value as a new record for a PRIMARY KEY or a UNIQUE index, the old record is deleted before the new record is inserted.
Et lille tip - join clause fra en select kan anvendes i delete / update etc - det er mere effektivt end brug af IN
a la
delete from table1 from table1 t1 inner join table2 t2 on t1.pk = t2.fk
det gør det også nemt at teste da man blot kan checke hvilke rækker der påvirkes ved at lave en select først og så udskifte alt før from med delete.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.