我有一个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
这是陷阱 . 我陷入困境,对如何继续感到困惑 . 我有多行要一次插入/更新 . 请给我一个指示 . 谢谢 .
3 回答
使用关键字
VALUES
来引用新值(请参阅documentation) .您可以使用Replace而不是INSERT ... ON DUPLICATE KEY UPDATE .
INSERT INTO ... ON DUPLICATE KEY UPDATE仅适用于MYSQL,不适用于SQL Server .
对于SQL Server,解决此问题的方法是首先声明临时表,将值插入该临时表,然后使用MERGE
像这样: