Ci sono 2 tabelle. Il primo ha fname
(nome), lname
(cognome) e il secondo ha molte colonne tra cui: salutation
(Mr, Dr ecc.), fname
(nome), mname
(secondo nome), lname
(cognome), un identificativo univoco e una data.SQL Server 2014 Inserisci dove NON IN
desidero creare una terza tabella contenente la Salutation
, fname
, mname
, lname
, uid
, added
dalle informazioni nelle altre 2 tavoli poi cadrà la prima tabella e ricreare la seconda tabella rimuovendo le colonne.
Questo è quello che ho:
CREATE TABLE MyTable
(
Id int IDENTITY (1, 1) PRIMARY KEY,
Salutation varchar(20) NULL DEFAULT (NULL),
Fname varchar(30) NOT NULL,
Mname varchar(30) NULL DEFAULT (NULL),
Lname varchar(30) NOT NULL,
Uid uniqueidentifier NULL DEFAULT (NULL),
Added Date NOT NULL DEFAULT (getdate())
);
INSERT INTO MyTable (Fname, LName)
SELECT Fname, Lname
FROM TABLE1
Questo è dove mi sono confuso:
INSERT INTO MyTable (Salutation, Fname, Mname, LName, Uid, Added)
SELECT
Salutation, Fname, Mname, LName, Uid, Added
FROM
Table2
WHERE
Fname, Lname NOT IN (SELECT Fname, Lname FROM Table1)
Qualcuno può correggere l'ultima INSERT
affermazione in modo che funzioni?
- non piace
Fname, Lname
alla destra della parolaWHERE
- Devo inserire dalla seconda tabella prima poi dal primo?
Sto scoprendo che questo approccio manca oltre 1000 record. Sto ancora giocando con questo tuo suggerimento ma ancora senza fortuna. Ho notato che Table2 ha un valore fname in alcune righe ma nessun altro nome quindi non desidero includerlo.Se ha un fname, lname lo aggiunge, se ha un saluto e lname lo include, se una riga ha solo uno dei Salutation o i nomi che lasciano gli altri 3 campi di nome liberi, non voglio che il risultato sia aggiunto. Avere questa piccola casella di testo per rispondere non è molto utile neanche. –
@EssexMale: ho aggiornato la mia risposta, tuttavia non mi sembra che sia al 100% quello che stai cercando, quindi penso che dovresti aggiornare il tuo post originale con un po 'più di elaborazione e una più chiara determinazione delle condizioni. – potashin