Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:inserisci dove non esiste

Usa insert . . . select :

INSERT INTO USER (name, email)
    SELECT 'John', 'john@mmm.com'
    WHERE NOT EXISTS
        (SELECT id FROM USER WHERE email = 'john@mmm.com');

Lo scriverei come:

INSERT INTO USER (name, email)
    SELECT name, email
    FROM (SELECT 'John' as name, 'john@mmm.com' as email) t
    WHERE NOT EXISTS (SELECT 1 FROM USER u WHERE u.email = t.email);

Ma un approccio migliore è probabilmente quello di inserire un indice univoco in modo che il database protegga i dati:

create unique index idx_users_email on user(email);