2017-12-04 4 views
-1

Ich habe zwei Tabellen (userfrom und userto).Wählen Sie eindeutige Datensätze aus und fügen Sie sie in eine andere Tabelle ein. Vermeiden Sie doppelte Einträge.

Ich möchte Daten von "userfrom" Tabelle zu "userto" einfügen und möchte die Bedingung auf zwei Spalten, d. H. "Benutzername" und "Datum" implementieren.

Grundsätzlich bin ich meine Daten von "userfrom" in Tabelle "userto" einfügen.

Zustand vor dem Einfügen ist.

Derselbe "Benutzername" mit demselben "Datum" sollte nicht eingefügt werden. Es kann den gleichen Benutzernamen geben, aber das Datum muss anders sein.

Benutzername ist identisch zwischen den beiden Tabellen

Bitte beachten Sie: (. Bei Wiederholung der INSERT-Abfrage nicht i gleichen Daten wollen dupliziert werden Dieser Einsatz Abfrage wird für 5 Mal in 30 min Klammer) Tabelle userfrom:

1 sampleusername 2017-12-04 
2 sampleusername 2017-12-04 
3 sampleusername2 2017-12-04 
4 sampleusername 2017-12-05 

Tabelle usertto:

1 sampleusername 2017-12-04 
2 sampleusername2 2017-12-04 
3 sampleusername 2017-12-05 
+1

Fügen Sie einige Beispieltabellendaten vor/nach Versionen hinzu. Zeigen Sie uns auch Ihren aktuellen Anfrageversuch. – jarlh

+0

Tabelle userfrom 1 sampleusername 2017.12.04 2 sampleusername 2017.12.04 3 sampleusername2 2017.12.04 Tabelle usertto 1 sampleusername 2017.12.04 2 sampleusername2 2017.12.04 –

+0

Bitte bearbeiten Ihre Frage mit Ihrem Kommentar, damit sie korrekt mit dem Beispieldatensatz formatiert werden kann. – kchason

Antwort

1

SQL DEMO

Sie können wie unter GROUP BY und EXISTS in SQL Server verwenden:

insert into userto (username, date) 
select distinct username, date from userfrom uf 
where 
not exists(select 1 from userto where username=uf.username and date=uf.date) 
+0

Warum GROUP BY, wenn keine Aggregatfunktionen verwendet werden? – jarlh

+0

Ich habe es als Alternative verwendet, da Sie bereits 'distinct' verwendet haben, beide ergeben in diesem Fall das gleiche Ergebnis. –

0

Sie können die beiden Tabellen LEFT JOIN, und dann nur die Werte aus userfrom einzufügen, wie dies nicht in userto Tabelle existieren:

INSERT INTO userTo 
    (
     username 
     ,userDate 
    ) 
SELECT DISTINCT f.username 
     ,f.userDate 
FROM usertrom f 
LEFT JOIN userto t ON f.username = t.username AND f.userDate = t.userDate 
WHERE t.id IS NULL 
Verwandte Themen