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

推荐订阅源

Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
Vercel News
Vercel News
D
DataBreaches.Net
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
小众软件
小众软件
美团技术团队
T
The Blog of Author Tim Ferriss
爱范儿
爱范儿
D
Docker
Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
博客园 - 聂微东
Blog — PlanetScale
Blog — PlanetScale
H
Hackread – Cybersecurity News, Data Breaches, AI and More
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
S
SegmentFault 最新的问题
云风的 BLOG
云风的 BLOG
B
Blog
雷峰网
雷峰网
The Cloudflare Blog

博客园 - 林石

[转].NET Core、Xamarin、.NET Standard和.NET Framework四者之间的区别 .NET工行E生活接入AES加密算法的吐槽-2018 [转]MYSQL性能查看(命中率,慢查询) 可遇不可求的Question之MySql4.0前版本不支持union与批量SQL提交 Cookie的几点忠告 可遇不可求的Question之MySqlClient的Guid 类型的映射篇 可遇不可求的Question之SQLSERVER触发器不支持多行插入操作篇 可遇不可求的Question之Sqlserver2005文件组的迁移篇 可遇不可求的Question之Mysql在不重启服务的情况下修改运行时变量篇 可遇不可求的Question之MySQL系统变量interactive_timeout 与 wait_timeout 篇 可遇不可求的Question之flash的socket连接安全策略文件篇 可遇不可求的Question之error: Failed dependencies: MySQLconflicts 错误篇 可遇不可求的Question之导入mysql中文乱码解决方法篇 Codesmith怎么判断sqlserver数据库字段是不是标识自增字段 可遇不可求的Question之skip-name-resolve模式篇 MySQL Error Codes MYSQL的错误代码 [转]如何成为强大的程序员? 可遇不可求的Question之Silverlight完美加密工具deepsea篇 可遇不可求的Question之反序列化时出现“base-64 字符数组的无效长度”错误提示篇
可遇不可求的Question之INSERT … ON DUPLICATE KEY UPDATE 语...
林石 · 2017-03-09 · via 博客园 - 林石

MySQL 自4.1版以后开始支持INSERT … ON DUPLICATE KEY UPDATE语法,使得原本需要执行3条SQL语句(SELECT,INSERT,UPDATE),缩减为1条语句即可完成。

例如ipstats表结构如下:

CREATE TABLE ipstats (
ip varchar(15) not null unique,
clicks smallint(5) unsigned not null default '0'
);

原本需要执行3条SQL语句,如下:

IF (SELECT * FROM ipstats WHERE ip='192.168.0.1') {
    UPDATE ipstats SET clicks=clicks+1 WHERE ip='192.168.0.1';
} else {
    INSERT INTO ipstats (ip, clicks) VALUES ('192.168.0.1', 1);
}

而现在只需下面1条SQL语句即可完成:

INSERT INTO ipstats VALUES('192.168.0.1', 1) ON DUPLICATE KEY UPDATE clicks=clicks+1;

注意,要使用这条语句,前提条件是这个表必须有一个唯一索引或主键。