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

MySQL:indsæt hvor ikke eksisterer

Brug insert . . . select :

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

Jeg ville skrive dette 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 en bedre tilgang er nok bare at indsætte et unikt indeks, så databasen beskytter dataene:

create unique index idx_users_email on user(email);


  1. Brug af SUM på FLOAT-data

  2. mysql-forespørgsel for alle poster ikke i dag

  3. Databasedesign til meget store mængder data

  4. Adgang 2016 For Dummies Cheat Sheet