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'已经存在,则相应的整行应该被更新,否则插入。

例如,在下面的例子中,如果'卡特里娜'已经存在于数据库中,则整个行,不pipe字段数量,都应该被更新。 再次,如果“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), ... 

您可以使用Replace替代INSERT … ON DUPLICATE KEY UPDATE。