Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :insérer là où il n'existe pas

Utilisez insert . . . select :

INSERT INTO USER (name, email)
    SELECT 'John', '[email protected]'
    WHERE NOT EXISTS
        (SELECT id FROM USER WHERE email = '[email protected]');

J'écrirais ceci comme suit :

INSERT INTO USER (name, email)
    SELECT name, email
    FROM (SELECT 'John' as name, '[email protected]' as email) t
    WHERE NOT EXISTS (SELECT 1 FROM USER u WHERE u.email = t.email);

Mais une meilleure approche consiste probablement à simplement mettre un index unique afin que la base de données protège les données :

create unique index idx_users_email on user(email);