sql >> Databasteknik >  >> RDS >> Mysql

MySQL:infoga där det inte finns

Använd insert . . . select :

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

Jag skulle skriva detta som:

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);

Men ett bättre tillvägagångssätt är förmodligen att bara lägga in ett unikt index så att databasen skyddar data:

create unique index idx_users_email on user(email);


  1. Hur GREATEST() fungerar i MariaDB

  2. Hur man använder mysqlimport för att läsa in resultat av mysqldump --databaser

  3. MySQL IFNULL() Förklarat

  4. kan inte ta emot parameter från oracle-proceduren som exekveras av mybatis