Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql einfügen, wenn der Wert nicht in einer anderen Tabelle vorhanden ist

Sie müssen eine Art INSERT...SELECT Abfrage.

Update (nach Klärung): Hier sehen Sie beispielsweise, wie Sie eine Zeile in t2 einfügen wenn eine entsprechende Zeile nicht bereits in t1 existiert :

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

Um mehrere Zeilen mit derselben Abfrage einzufügen, gibt es leider nichts Besseres als

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

Originalantwort

Dies wird zum Beispiel other_column nehmen aus allen Zeilen von table1 die dem WHERE genügen -Klausel und fügen Zeilen in table2 ein mit den Werten, die als column_name verwendet werden . Fehler doppelter Schlüssel werden ignoriert.

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