MySQL ON DUPLICATE KEY UPDATE多行插入单个查询?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (99)

我有一个SQL查询,其中我想在单个查询中插入多行。所以我用了这样的方法:

$sql = "INSERT INTO beautiful (name, age)
  VALUES
  ('Helen', 24),
  ('Katrina', 21),
  ('Samia', 22),
  ('Hui Ling', 25),
  ('Yumie', 29)";

mysql_query( $sql, $conn );

问题是,当我执行这个查询时,我想要检查是否有一个唯一的键(不是主键),在上面的情况下,应该检查“name”,如果这样的“name”已经存在,则应该更新相应的整行。

例如,在下面的示例中,如果‘Katrina’已经出现在数据库中,那么应该更新整行,而不管字段的数量如何。同样,如果“Samia”不存在,则应插入该行。

我想用:

INSERT INTO beautiful (name, age)
      VALUES
      ('Helen', 24),
      ('Katrina', 21),
      ('Samia', 22),
      ('Hui Ling', 25),
      ('Yumie', 29) ON DUPLICATE KEY UPDATE

我被困住了,弄不清楚该怎么做。

提问于
用户回答回答于
用户回答回答于

使用关键字VALUES引用新值(请参见文献资料)。

INSERT INTO beautiful (name, age)
    VALUES
    ('Helen', 24),
    ('Katrina', 21),
    ('Samia', 22),
    ('Hui Ling', 25),
    ('Yumie', 29)
ON DUPLICATE KEY UPDATE
    age = VALUES(age),
     ...

扫码关注云+社区

领取腾讯云代金券