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

mysql вмъкване, ако стойността не съществува в друга таблица

Трябва да използвате някакъв тип INSERT...SELECT заявка.

Актуализация (след изясняване): Например, ето как да вмъкнете ред в t2 ако съответен ред вече не съществува в 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

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

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

Оригинален отговор

Например, това ще отнеме other_column от всички редове от table1 които отговарят на WHERE клауза и вмъкнете редове в table2 със стойностите, използвани като column_name . Той ще игнорира дублиращи се ключови грешки.

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. Мога ли да обединя множество MySQL редове в едно поле?

  2. PHP MySQL - Грешка:Няма избрана база данни

  3. вземете необработена десетична стойност от mysqldb заявка

  4. Преобразуване на таблица от MyISAM в INNODB

  5. Заявката за MySQL Insert не работи с клауза WHERE