多值插入到另一个表中不存在的表中

rjzwgtxy  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(344)

我有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)

我走的是正确的道路还是有更好的方法?
谢谢

uyto3xhc

uyto3xhc1#

你需要使用 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上演示

相关问题