sql >> Databáze >  >> RDS >> Mysql

MySQL:vložte tam, kde neexistuje

Použijte insert . . . select :

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

Napsal bych to takto:

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

Ale lepší přístup je pravděpodobně vložit jedinečný index, aby databáze chránila data:

create unique index idx_users_email on user(email);


  1. funkce rot13 na MYSQL

  2. Parametr číslo 2 není parametr OUT

  3. Vytvořit databázovou tabulku ActiveRecord bez sloupce :id?

  4. Získejte všechna POST data a odešlete je e-mailem