MySQL 如果某个行在另一个 table 上不存在,则有条件地插入一个 table

MySQL Conditional insert to one table if a certain row does not exist on another table

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

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

您可以使用 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_2 中不存在具有 other 值的行时限制插入 table_1
  • NOT EXISTS 比使用 COUNT(*).
  • 更有效
  • 使用 INSERT 时应始终列出列。