MySQL 的高效更新插入:INSERT ... ON DUPLICATE KEY UPDATE
MySQL 经常面临需要根据键的存在插入新行或更新现有行的情况。这种组合操作称为 upsert(或合并),可以在 MySQL 中使用单个语句优雅地处理。
在重复密钥更新时利用 INSERT ...
MySQL 的 INSERT ... ON DUPLICATE KEY UPDATE
语句取代了多个查询,简化了此过程。它的语法很简单:
<code class="language-sql">INSERT INTO `table_name` (`column1`, `column2`, ...) VALUES (`value1`, `value2`, ...) ON DUPLICATE KEY UPDATE `column1` = `value1`, `column2` = `value2`, ...</code>
实际应用:增加使用次数
想象一个 usage
表,其中包含 thing_id
、times_used
和 first_time_used
列。 目标是如果行存在,则增加给定 times_used
的 thing_id
;否则,插入新行。
使用INSERT ... ON DUPLICATE KEY UPDATE
可以轻松完成此任务:
<code class="language-sql">INSERT INTO `usage` (`thing_id`, `times_used`, `first_time_used`) VALUES (4815162342, 1, NOW()) ON DUPLICATE KEY UPDATE `times_used` = `times_used` + 1</code>
此查询智能地处理两种情况:如果 thing_id
4815162342 存在,则 times_used
递增;否则,将添加具有指定值的新行。 这证明了 MySQL 的 upsert 功能的高效和简洁。
以上是MySQL的INSERT ... ON DUPLICATE KEY UPDATE如何高效处理插入和更新?的详细内容。更多信息请关注PHP中文网其他相关文章!