惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
宝玉的分享
宝玉的分享
博客园 - 【当耐特】
博客园 - 司徒正美
L
LangChain Blog
有赞技术团队
有赞技术团队
大猫的无限游戏
大猫的无限游戏
Stack Overflow Blog
Stack Overflow Blog
Engineering at Meta
Engineering at Meta
U
Unit 42
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
博客园 - 叶小钗
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
月光博客
月光博客
量子位
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
Google DeepMind News
Google DeepMind News
云风的 BLOG
云风的 BLOG
D
DataBreaches.Net

博客园 - tying

fastadmin mongodb 处理及使用 <论语> fastadmin配合宝塔面板造成cors error 跨域问题 一个小并发,引起的数据错误 小型在线聊天功能 fastadmin数据库操作 技术文章分享 shopxo学习过程 fastadmin 開發好文章 fastadmin常用前端组件 2024-11-13关于监管特殊停牌炒作股票事件--兼此事件复盘 深入浅出的讲解mysql优化 关于gruop by,where和order by ,以及一些mysql的探讨 fastadmin使用感受 fastadmin命令行模式--command mac 下Fastadmin 框架搭建 Mac电脑php环境搭建 关于php+mysql性能在实际工作中的应用实例 yii2的单元测试 d8的入口文件及引申
mysql的知识扩展
tying · 2026-01-19 · via 博客园 - tying

专门记录一下有用的,但是感觉乱七八糟的mysql 语句:

1.存在则修改,不存在则插入

REPLACE,此关键词如果存在主键冲突,则会先删除旧记录,再插入新记录(相当于 DELETE + INSERT)

只有当你不在乎旧数据,想完全用新值覆盖旧记录时才用。

与之相对应的sql语句

INSERT ... ON DUPLICATE KEY UPDATE

如果插入时,存在唯一键(唯一索引、主键),则根据唯一键的值更新update后面的数据

举例

INSERT INTO fa_interaction (user_id, activity_id, num, createtime, updatetime) VALUES (?, ?, 1, NOW(), NOW()) ON DUPLICATE KEY UPDATE num = IF(num < 5, num + 1, num), updatetime = NOW();

这能完美实现:不存在则插入 num=1,存在则 num+1(但不超过5)

REPLACE INTO fa_interaction (user_id, activity_id, num, createtime, updatetime) VALUES (?, ?, 1, NOW(), NOW());

每次点击 num 都会重置为1(因为 REPLACE 先删旧记录,再插入新记录的 num=1),如果有自增主键 id:旧记录被删,新记录拿新ID,可能导致关联表外键混乱