- 浏览: 948634 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- mysql (37)
- hibernate (3)
- struts (9)
- spring (33)
- dom4j (2)
- junit (0)
- exception (1)
- 随笔杂谈 (12)
- google app engine (1)
- XMPP (1)
- OAuth安全授权 (1)
- 版本控制 (8)
- 心情感悟 (0)
- core java (19)
- log4j (7)
- jquery (12)
- javascript (10)
- 网站性能优化及工具 (11)
- 服务器架设配置等 (38)
- EXT (4)
- 正则表达式 (5)
- 日志统计分析 (2)
- htmlparse (4)
- httpclient (5)
- java随笔 (5)
- dhtmlxtree (1)
- freemarke (5)
- memcached (6)
- javamail (5)
- Linux命令 (10)
- 应用监控cpu web jdbc等 (4)
- jmagick (9)
- 第三方缓存策略 (9)
- ORM (2)
- hadoop (2)
- 大数据量处理 (8)
- 经典 (1)
- 权限设计 (1)
- andriod (1)
- mybatis (12)
- redis (24)
- 数据结构_算法 (5)
- 分布式系统 (1)
- php (1)
- 网络编程 (3)
- 服务器部署 (3)
- ios (2)
- IM (23)
- mina (1)
- 视讯和语音 (1)
- 代码生成 (1)
- 架构 (4)
- 建模工具 (1)
- oracle (4)
- solr (10)
- 构建工具 (7)
- html5 (1)
- nginx (5)
- css (1)
- 大数据-分布式 (2)
- 设计模式 (2)
- mq (2)
- jvm调优 (8)
- 并发编程 (2)
- 搜索引擎 (1)
- UML (2)
最新评论
-
天使建站:
jquery获取网页里多选框checkbox选中项的值的方法及 ...
JS jQuery分别获取选中的复选框值 -
abao1:
发现一个小问题 sortAndSave方法中的for循环 第二 ...
完整java实现外部排序 -
西巴拉古呀那:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
消息系统kafka介绍 -
kafodaote:
Kafka分布式消息系统实战(与JavaScalaHadoop ...
消息系统kafka介绍 -
成大大的:
Kafka分布式消息系统实 ...
消息系统kafka介绍
一条mysql教程 存在该记录则更新,不存在则插入记录的sql
INSERT table (auto_id, auto_name) values (1, ‘yourname') ON DUPLICATE KEY UPDATE auto_name='yourname'
ON DUPLICATE KEY UPDATE的使用
如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:
复制代码 代码如下:
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
-> ON DUPLICATE KEY UPDATE c=c+1;
mysql> UPDATE table SET c=c+1 WHERE a=1;
如果行作为新记录被插入,则受影响行的值为1;如果原有的记录被更新,则受影响行的值为2。
注释:如果列b也是唯一列,则INSERT与此UPDATE语句相当:
复制代码 代码如下:
mysql> UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;
如果a=1 OR b=2与多个行向匹配,则只有一个行被更新。通常,您应该尽量避免对带有多个唯一关键字的表使用ON DUPLICATE KEY子句。
您可以在UPDATE子句中使用VALUES(col_name)函数从INSERT...UPDATE语句的INSERT部分引用列值。换句话说,如果没有发生重复关键字冲突,则UPDATE子句中的VALUES(col_name)可以引用被插入的col_name的值。本函数特别适用于多行插入。VALUES()函数只在INSERT...UPDATE语句中有意义,其它时候会返回NULL。
示例:
复制代码 代码如下:
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
-> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
本语句与以下两个语句作用相同:
复制代码 代码如下:
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
-> ON DUPLICATE KEY UPDATE c=3;
mysql> INSERT INTO table (a,b,c) VALUES (4,5,6)
-> ON DUPLICATE KEY UPDATE c=9;
当您使用ON DUPLICATE KEY UPDATE时,DELAYED选项被忽略。
------------------------------------------------------------------------------------------------------------------------
MySQL has a special construct for this. Assume the 'username' column below is UNIQUE:INSERT INTO users (username, email) VALUES ('Jo', 'jo@email.com')
ON DUPLICATE KEY UPDATE email = 'jo@email.com'
The 'ON DUPLICATE KEY' statement only works on PRIMARY KEY and UNIQUE columns.<!-- google_ad_section_end -->
发表评论
-
[翻译]如何在mysql中查询每个分组的前几名
2013-08-28 10:56 6331http://my.oschina.net/u/103214 ... -
mysql数据启动大量报错且无法启动(The InnoDB memory heap is disabled,Status: NOT_KILLED)故障排查
2013-07-09 15:55 4989mysql数据启动大量报错且无法启动(The InnoDB ... -
mysql修改表、字段、库的字符集
2013-07-09 14:58 917修改数据库字符集: ALTER DATABASE ... -
MySQL数据库my.cnf配置文件注释详解
2013-05-22 08:50 1774我们知道,在MySQL数据库安装完成后,要对my.cnf配置 ... -
CentOS-Mysql 自动备份-shell 脚本
2013-05-21 17:25 2821功能说明: 在服务器A上,每天自动运行一个 shell ... -
mysql dump问题
2013-05-21 17:08 2396由于主从数据不一致,并且之前删除了主数据库上的binlog日 ... -
Mysql 数据库自动备份Shell脚本
2013-05-21 15:31 1085#!/bin/bash #Shell Command ... -
mysql的limit优化(大数据量 Mysql limit分页慢的解决办法)
2012-01-18 17:27 3969mysql的limit优化(大数据量 Mysql limit分 ... -
mysql limit 大数据量分页优化方法
2012-01-18 17:22 2485Mysql的优化是非常重要的。其他最常用也最需要优化的就是li ... -
mysql limit查询优化(数据量大的时候很优)
2012-01-18 16:35 1931mysql limit查询优化[转载],由于limit经常 ... -
MySQL创建用户与授权
2011-10-27 14:09 1207注:我的运行环境是widnow ... -
no sql
2011-06-28 17:08 811http://www.iteye.com/topic/524 ... -
MySQL性能优化
2011-06-11 22:41 995转自:http://www.iteye.com/t ... -
详解mysql 查询表索引的命令
2011-06-07 00:10 1650查看索引命令mysql> show index from ... -
MySQL5.5在Windows下的安装
2011-05-03 09:49 1420选择安装目录下的*.ini文件(这里选择my-medium.i ... -
mysql linux环境下忽略表名大小写配置
2011-03-08 15:07 2689忽略大小写: 在配置文件的 [mysqld] 区段下增 ... -
centos的5.2,mysql免安装版本
2011-03-04 15:37 2614centos的版本是5.2,mysql的版本是最新的稳定版本5 ... -
mysql备份导入导出命令
2010-10-07 02:09 2648几个常用用例: 一、 ... -
Mysql Memory引擎的简单应用
2010-10-05 18:53 1603memory存储引擎(老版本 ... -
mysql去重
2010-10-03 01:58 1836table id name 1 a 2 b 3 ...
相关推荐
若表名后不给出列名,则在VALUES子句中要给出每一列(除IDENTITY和timestamp类型的列)的值,如果列值为空,则值必须置为NULL,否则会出错。VALUES子句中的值: (1)表达式:可以是一个常量、变量或一个表达式,也...
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
### MySQL数据库SQL优化 #### 一、SQL优化 在MySQL数据库管理中,SQL查询的性能直接影响到系统的响应时间和资源消耗。通过合理的SQL优化,可以显著提高数据处理速度,降低服务器负载,提升用户体验。 ##### 1.1 ...
本代码,用python语句,实现了一次插入多条sql语句。希望能对大家带来帮助。
例如,如果我们有一个名为`employees`的表,包含`id`, `name`和`position`字段,可以这样插入一条记录: ```sql INSERT INTO employees (id, name, position) VALUES (1, '张三', '经理'); ``` 在Java开发中,通常...
在插入17条记录后,删除了ID为15、16和17的记录,然后重启MySQL服务,再插入一条新的记录。 - **MyISAM**:由于MyISAM使用独立的文件存储自动增长的ID值,即使在删除了一些记录并重启MySQL服务后,新的记录ID也会...
MySQL 数据库提供了一种高效的方法来处理“如果数据不存在,则插入新数据,否则更新”的场景,这主要通过 `INSERT ... ON DUPLICATE KEY UPDATE` 语句实现。此语句允许我们在尝试插入数据时,如果遇到主键或唯一键...
* 更新记录:`update vpopmail.vpopmail set pw_privilege='1' where pw_name='haha';` 修改表结构语句 * 添加列:`alter table vpopmail add pw_haha int(10) default null;` * 删除列:`alter table vpopmail ...
例如,插入一条记录到 student 表: ```sql INSERT INTO student (sno, sname, ssex, sage, sdept) VALUES ('4001', '赵茵', '男', 20, 'SX'); ``` 三、删除数据 在 MySQL 中,删除数据使用 DELETE 语句。例如,...
批量插入的基本思想是将多条INSERT语句合并为一条语句执行,减少网络传输和事务管理开销,从而提高效率。在MyBatis中,通过`foreach`元素可以实现这一目标。`foreach`元素允许在SQL语句中进行迭代,特别适合用于构建...
在 MySQL 中批量更新记录时,使用 Replace Into 或 Insert Into ... On Duplicate Key Update 语句可以大大提高更新效率,而使用临时表的方法也可以提高效率,但是需要用户有 temporary 表的 create 权限。
在Python3中操作MySQL数据库并插入一条数据,然后获取并返回这条数据的主键id是数据库编程中常见的需求。这一过程可以分为几个关键步骤:数据库连接、执行插入操作、获取主键id以及事务提交。下面详细说明每个步骤...
首先,一种有效的优化策略是通过合并多条SQL语句来一次性插入多条数据。传统的做法是逐条执行INSERT语句,而优化后的做法是将多条数据合并到一个单独的INSERT语句中,如下面所示: ```sql INSERT INTO `insert_...
当尝试插入一条与已有记录具有相同值的行时,唯一键约束会阻止该操作并抛出错误。例如,在上述内容中,通过修改`name`字段为BINARY类型,并添加唯一键约束,可以确保`name`字段的唯一性: ```sql ALTER TABLE `user...
优化的方式是将多条插入语句合并为一条,如示例所示,一次性插入多个值。这样减少了MySQL的binlog和InnoDB日志的写入次数,降低了磁盘I/O,提高了插入速度。同时,合并SQL语句还能减少SQL解析次数,节省网络传输资源...
有两张表A和B,要求往A里面插入一条记录的同时要向B里面也插入一条记录,向B里面插入一条记录的同时也向A插入一条记录。两张表的结构不同,需要将其中几个字段对应起来。可以用下面的触发器实现。 表A的触发器: ...
这样,每当用户发送一条消息,都会在MySQL数据库中创建一条新的记录。为了查询历史记录,可以编写一个API端点,从数据库中检索并返回这些记录: ```javascript app.get('/api/messages', (req, res) => { const ...
ON DUPLICATE KEY UPDATE`语句,这在MySQL中是一种非常实用的特性,当记录已存在时进行更新,不存在时则插入新记录。 总之,`UPDATE`语句结合`CASE`和`WHERE`子句可以有效地更新多条记录,而通过编程语言如PHP动态...
执行一条计算查询结果语句,返回查询结果 执行查询语句,返回MySqlDataReader 执行查询语句,返回DataSet 执行SQL语句,返回影响的记录数 执行多条SQL语句,实现数据库事务。 执行带一个存储过程参数的的SQL语句。 ...
例如,向MYTABLE表中添加一条记录,可以使用`INSERT INTO MYTABLE VALUES(’hyq’, ’M’);`。 查看数据库中存在哪些表,可以使用`SHOW TABLES;`。查看表结构可以使用`DESCRIBE 表名;`,例如`DESCRIBE MYTABLE;`。...