View Full Version : [MS SQL] Insert senza duplicati
Mi servirebbe fare una insert da una tabella A in un'altra B evitando però di inserire le righe già presenti in B.
A priori non conosco la chiave di B e quindi non posso fare una cosa tipo:
INSERT INTO B
SELECT * FROM A WHERE NOT EXISTS
(...)
esiste invece un comando specifico di MS Sql Server per non inserire duplicati?
(penso a qualcosa tipo IGNORE_DUP_KEY della bulk)
nuovoUtente86
13-06-2008, 14:22
Scusa, ma alla fine gli inserimenti sono protetti dalla chiave primaria della tabella ricevente. Essendo il compito della chiave di imperdire la presenza di ambiguità, sul quel campo non avrai problemi e del resto sugli altri ( a meno degli Unique) accettare i diplucati è nell' ordine delle cose.
Scusa, ma alla fine gli inserimenti sono protetti dalla chiave primaria della tabella ricevente. Essendo il compito della chiave di imperdire la presenza di ambiguità, sul quel campo non avrai problemi e del resto sugli altri ( a meno degli Unique) accettare i diplucati è nell' ordine delle cose.
sì ma in pratica quello che vorrei è che vengano copiate in B solo le righe di A che non hanno la stessa chiave di qualcosa che è già contenuto in B, però tieni presente che non conosco la chiave di B.
nuovoUtente86
14-06-2008, 14:58
cerca di fare un esempio pratico di quello che vorresti, con 2 semplicissime tabelle.
Tabella A:
campoA: campoB:
valoreA1 valoreB1
valoreA2 valoreB2
Tabella B:
campoA: campoB:
valoreA1 valoreB4
valoreA3 valoreB3
ponendo che la chiave della tabella B sia data dal campoA, ma che io non sappia a priori che il campoA è chiave,
vorrei che venisse copiata da A a B solo la tupla valoreA2 valoreB2.
ovviamente se sapessi a priori che campoA è chiave potrei fare questa query:
insert into B
select * from A where
campoA not in (select campoA from B)
edit:
Per maggiore chiarezza, utilizzassi MySql, da quello che ho capito,
basterebbe utilizzare la parola chiave ignore, cioè sarebbe:
insert ignore into B
select * from A
in questo modo, ad ogni riga con la stessa chiave sarebbe restituito solo un warning, ma lo statement non sarebbe abortito.
esiste un comando simile in MS Sql?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.