sql >> Database >  >> RDS >> Mysql

mysql invoegen als waarde niet bestaat in een andere tabel

Je moet een soort INSERT...SELECT vraag.

Update (na verduidelijking): Hier ziet u bijvoorbeeld hoe u een rij invoegt in t2 als een corresponderende rij nog niet bestaat in 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

Om meerdere rijen met dezelfde zoekopdracht in te voegen, vrees ik dat er niets beters is dan

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

Oorspronkelijk antwoord

Dit duurt bijvoorbeeld other_column uit alle rijen van table1 die voldoen aan de WHERE clausule en voeg rijen in table2 in met de waarden gebruikt als column_name . Het negeert dubbele sleutelfouten.

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


  1. Update ListView op basis van door SQLite ondersteunde ContentProvider

  2. Trace Flag 3226 gebruiken om logboekregistratie van back-ups te onderdrukken

  3. Afbeeldingen toewijzen aan structuurweergaveknooppunten

  4. Java-project voltooid, nu jar- of .exe-bestand gemaakt (met database)