在多个查询中插入多行的MySQL ON DUPLICATE KEY UPDATE

我有一个SQL查询,我想在单个查询中插入多行。所以我用了类似的东西:


$sql = "INSERT INTO beautiful (name, age)

  VALUES

  ('Helen', 24),

  ('Katrina', 21),

  ('Samia', 22),

  ('Hui Ling', 25),

  ('Yumie', 29)";


mysql_query( $sql, $conn );

问题是,当我执行此查询时,我想检查是否应检查例如上面的UNIQUE键(不是PRIMARY KEY),'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

这是陷阱。我对如何进行感到困惑和困惑。我一次有多个行要插入/更新。请给我一个方向。谢谢。


弑天下
浏览 676回答 3
3回答

翻翻过去那场雪

使用关键字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),     ...

茅侃侃

您可以使用 Replace代替INSERT ... ON DUPLICATE KEY UPDATE。
打开App,查看更多内容
随时随地看视频慕课网APP