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

mysql wstaw, jeśli wartość nie istnieje w innej tabeli

Musisz użyć jakiegoś typu INSERT...SELECT zapytanie.

Aktualizacja (po wyjaśnieniu): Na przykład, oto jak wstawić wiersz w t2 jeśli odpowiedni wiersz nie istnieje w t1 :

INSERT INTO t2 (v)
  SELECT temp.candidate
  FROM (SELECT 'test' AS candidate) temp
  LEFT JOIN t1 ON t1.v = temp.candidate
  WHERE t1.v IS NULL

Obawiam się, że nie ma nic lepszego do wstawienia wielu wierszy z tym samym zapytaniem niż

INSERT INTO t2 (v)
  SELECT temp.candidate
  FROM (
      SELECT 'test1' AS candidate
      UNION SELECT 'test2'
      UNION SELECT 'test3' -- etc
  ) temp
  LEFT JOIN t1 ON t1.v = temp.candidate
  WHERE t1.v IS NULL

Oryginalna odpowiedź

Na przykład zajmie to other_column ze wszystkich wierszy z table1 które spełniają WHERE klauzulę i wstawiaj wiersze do table2 z wartościami używanymi jako column_name . Zignoruje błędy zduplikowanych kluczy.

INSERT IGNORE INTO table2 (column_name)
  SELECT table1.other_column
  FROM table1 WHERE table1.something == 'filter';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy mogę rozwiązać ten problem za pomocą czystego mysql? (łączenie na „” rozdzielonych wartościach w kolumnie)

  2. Usuń z jednego stołu z dołącz

  3. PDOException „nie można znaleźć sterownika” w php

  4. Dlaczego otrzymuję komunikat „Logowanie binarne nie jest możliwe”. na moim serwerze MySQL?

  5. SQLAlchemy - Pobieranie listy tabel