Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL:вмъкнете там, където не съществува

Използвайте insert . . . select :

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

Бих написал това като:

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

Но по-добрият подход вероятно е просто да поставите уникален индекс, така че базата данни да защитава данните:

create unique index idx_users_email on user(email);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не може да се свърже mysql от Sequel gem

  2. Влияе ли на производителността AWS RDS криптирането с KMS?

  3. Joomla:Извикване на помощна функция от модела?

  4. Как мога да пропусна колона от израза SELECT, докато го използвам в клауза HAVING?

  5. Добавяне на множество колони СЛЕД определена колона в MySQL