Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL:wstaw tam, gdzie nie istnieje

Użyj insert . . . select :

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

Zapisałbym to jako:

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

Ale lepszym podejściem jest prawdopodobnie umieszczenie unikalnego indeksu, aby baza danych chroniła dane:

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. Łączenie tabeli z warunkiem podciągu

  2. Zapisywanie obrazu w MySQL z Javy

  3. Klauzula LIKE Mysql i oddzielne słowa w polu

  4. Dlaczego sesja telefoniczna nie działa? (współzapalnik 3)

  5. Dlaczego otrzymuję identyfikator zasobu nr 4, gdy stosuję print_r() do tablicy w PHP?