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

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

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

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

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

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

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

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