我有一个 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'已经存在,则应该更新相应的整行,否则插入。
UNIQUE
PRIMARY KEY
'name'
例如,在下面的示例中,如果'Katrina'数据库中已经存在,则无论字段数如何,都应该更新整行。同样,如果'Samia'不存在,则应插入该行。
'Katrina'
'Samia'
我想过使用:
INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) ON DUPLICATE KEY UPDATE
这里是陷阱。我对如何进行感到困惑和困惑。我一次要插入/更新多行。请给我一个方向。谢谢。
从 MySQL 8.0.19 开始,您可以为该行使用别名(请参阅参考资料)。
INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) **AS new** ON DUPLICATE KEY UPDATE age = **new.** age ...
对于早期版本,请使用关键字VALUES(请参阅参考资料,在 MySQL 8.0.20 中已弃用)。
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), ...