【问题标题】:MySQL: Conditional INSERT ... SELECT for multiple rows with constant valuesMySQL:条件 INSERT ... SELECT 用于具有常量值的多行
【发布时间】:2012-04-13 23:20:56
【问题描述】:

我知道如何在单个查询中插入具有常量值的多行:

INSERT INTO table
VALUES
  (1, 'a', 'x'),
  (2, 'b', 'y'),
  (3, 'c', 'z');

但是我如何有条件地做到这一点?我想确保只插入不存在的*行。甚至可以在单个查询中完成吗?

*当所有列与我们插入的列相同时,该行存在

【问题讨论】:

    标签: mysql select insert


    【解决方案1】:

    使用INSERT IGNORE INTO 代替INSERT INTO。如果没有违反唯一键约束,前者只会插入行。

    INSERT IGNORE INTO table
    VALUES
      (1, 'a', 'x'),
      (2, 'b', 'y'),
      (3, 'c', 'z');
    

    【讨论】:

    • 但是 IGNORE 只会检查现有的 keys。幸运的是,这适用于我的设置。但是,如果我想让它检查所有内容(包括非关键列)怎么办?
    猜你喜欢
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2019-03-14
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多