MYSQL - вставка нескольких значений в таблицу, где в другом нет - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть массив PHP (массив имеет несколько значений), и я хочу добавить эти данные в таблицу, но перед вставкой в ​​таблицу проверка на наличие значения существует в другой таблице, если значение попадает в другую таблицу, пропустите это значение.

Пример:

INSERT INTO table1('column1','column2','column3') VALUES
  ('val11','val11','val11'),
  ('val12','val12','val12')
    WHERE NOT EXIST 
      (SELECT * FROM table2 WHERE table2.column1 = VALUES(column1) AND 
        table2.column2 = VALUES(column2) AND table2.column3 = VALUES(column3)

Я на правильном пути или есть лучший способ сделать это?

Спасибо

Miten

1 Ответ

0 голосов
/ 03 декабря 2018

Вам нужно использовать синтаксис INSERT ... SELECT для достижения этого результата.Поскольку у вас есть несколько строк, вы должны UNION строк данных в одной производной таблице, а затем проверить, что значения в этой таблице не существуют в table2:

INSERT INTO table1 (column1, column2, column3)
SELECT *
FROM (SELECT 'val11' AS column1, 'val12' AS column2, 'val13' AS column3
      UNION
      SELECT 'val21', 'val22', 'val23') v
WHERE NOT EXISTS (SELECT * 
                  FROM table2 t2
                  WHERE t2.column1 = v.column1
                    AND t2.column2 = v.column2
                    AND t2.column3 = v.column3)

Демонстрацияна dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...