MySQL条件插入到一个表,如果另一个表上不存在某个行

时间:2017-05-05 12:12:04

标签: mysql sql conditional

是否可以像这样执行插入查询?

INSERT INTO `table_1`
VALUES ('val1','val2','val3')
WHERE (
  SELECT COUNT(*)
  FROM `table_2`
  WHERE col1='somevalue'
)=0;

1 个答案:

答案 0 :(得分:2)

您可以使用insert . . . select

执行此操作
INSERT INTO `table_1`(col1, col2, col3)
    SELECT col1, col2, col3
    FROM (SELECT 'val1' as col1,'val2' as col2, 'val3' as col3) t
    WHERE NOT EXISTS (SELECT 1
                      FROM table_2 t2
                      WHERE t2.col1 = 'somevalue'
                     );

注意:

  • 这看起来很奇怪。当table_1其他值不存在任何行时,将插入限制为table_2
  • NOT EXISTS比使用COUNT(*)更有效。
  • 使用INSERT时,您应始终列出列。