2017-03-03 4 views
1

In wie ich eine Zeile einfügen, wenn keine Zeile für eine bestimmte E-Mail existiert, muss ich tausend fehlende Zeilen aus einer Datenbanktabelle I erstellen Habe eine Datei mit fünftausend E-Mails Ich weiß nicht welche E-Mail bereits in der Tabelle ist und welche nicht.Wie füge ich Zeilen in Mysql ein, wenn Zeile nicht mit demselben Wert existiert

Ich habe versucht, eine SQL-Anweisung für jede Zeile wie folgt zu konstruieren, aber es ist ungültig SQL-Syntax

insert into License (email) select unique '[email protected]' where not exists (select 1 from License where email='[email protected]'); 

E-Mail nicht der Primärschlüssel der Tabelle ist und müssen nicht zwangsläufig einzigartig, alles, was ich bin besorgt über ist, wenn Es gibt keinen Datensatz mit der E-Mail-Adresse hinzufügen einen Datensatz, sonst nicht.

Antwort

2

Sie können dieses Problem beheben, indem Sie eine from-Klausel für die where mit:

insert into License (email) 
    select email 
    from (select '[email protected]' as email) t 
    where not exists (select 1 from License l where l.email = t.email); 

Allerdings macht es mehr Sinn, in einer Anweisung, um alle Einsätze zu tun:

insert into License (email) 
    select t.email 
    from database_table t 
    where not exists (select 1 from License l where l.email = t.email); 

Sie können eine hinzufügen limit 1000, wenn Sie nur 1000 von ihnen wollen.

+0

danke das hat funktioniert –

Verwandte Themen