- 浏览: 931598 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 6288http://my.oschina.net/u/103214 ... -
mysql数据启动大量报错且无法启动(The InnoDB memory heap is disabled,Status: NOT_KILLED)故障排查
2013-07-09 15:55 4889mysql数据启动大量报错且无法启动(The InnoDB ... -
mysql修改表、字段、库的字符集
2013-07-09 14:58 884修改数据库字符集: ALTER DATABASE ... -
MySQL数据库my.cnf配置文件注释详解
2013-05-22 08:50 1740我们知道,在MySQL数据库安装完成后,要对my.cnf配置 ... -
CentOS-Mysql 自动备份-shell 脚本
2013-05-21 17:25 2782功能说明: 在服务器A上,每天自动运行一个 shell ... -
mysql dump问题
2013-05-21 17:08 2352由于主从数据不一致,并且之前删除了主数据库上的binlog日 ... -
Mysql 数据库自动备份Shell脚本
2013-05-21 15:31 1052#!/bin/bash #Shell Command ... -
mysql的limit优化(大数据量 Mysql limit分页慢的解决办法)
2012-01-18 17:27 3928mysql的limit优化(大数据量 Mysql limit分 ... -
mysql limit 大数据量分页优化方法
2012-01-18 17:22 2441Mysql的优化是非常重要的。其他最常用也最需要优化的就是li ... -
mysql limit查询优化(数据量大的时候很优)
2012-01-18 16:35 1892mysql limit查询优化[转载],由于limit经常 ... -
MySQL创建用户与授权
2011-10-27 14:09 1169注:我的运行环境是widnow ... -
no sql
2011-06-28 17:08 776http://www.iteye.com/topic/524 ... -
MySQL性能优化
2011-06-11 22:41 963转自:http://www.iteye.com/t ... -
详解mysql 查询表索引的命令
2011-06-07 00:10 1615查看索引命令mysql> show index from ... -
MySQL5.5在Windows下的安装
2011-05-03 09:49 1384选择安装目录下的*.ini文件(这里选择my-medium.i ... -
mysql linux环境下忽略表名大小写配置
2011-03-08 15:07 2656忽略大小写: 在配置文件的 [mysqld] 区段下增 ... -
centos的5.2,mysql免安装版本
2011-03-04 15:37 2568centos的版本是5.2,mysql的版本是最新的稳定版本5 ... -
mysql备份导入导出命令
2010-10-07 02:09 2614几个常用用例: 一、 ... -
Mysql Memory引擎的简单应用
2010-10-05 18:53 1568memory存储引擎(老版本 ... -
mysql去重
2010-10-03 01:58 1798table 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 ...
本代码,用python语句,实现了一次插入多条sql语句。希望能对大家带来帮助。
执行一条计算查询结果语句,返回查询结果 执行查询语句,返回MySqlDataReader 执行查询语句,返回DataSet 执行SQL语句,返回影响的记录数 执行多条SQL语句,实现数据库事务。 执行带一个存储过程参数的的SQL语句。 ...
对于一些数据量较大的系统,数据库...1. 一条SQL语句插入多条数据。 常用的插入语句如: INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0); INSERT I
今天抽时间整理了一篇mysql中与天、周、月有关的时间数据的sql语句的各种写法,部分是收集资料,全部手工整理,自己学习的同时,分享给大家,并首先默认创建一个表、插入2条数据,便于部分数据的测试,其中部分名词...
对于一些数据量较大的系统,数据库... 一条SQL语句插入多条数据。 常用的插入语句如: INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0
例如,往表 MyClass中插入二条记录, 这二条记录表示:编号为的名为Tom的成绩为.45, 编号为 的名为Joan 的成绩为.99,编号为 的名为Wang 的成绩为.5. mysql>insert into MyClass values(1,’Tom’,96.45),(2,’Joan...
例如,往表 MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩为96.45, 编号为2 的名为Joan 的成绩为82.99,编号为3 的名为Wang 的成绩为96.5. mysql> insert into MyClass values(1,'Tom',96.45),(2,...
工作中遇到一个问题:要更新一个数据表。 这个表是我自己创建的,有7个字段,id、name、...一次更新多条信息的思路如下: UPDATE table_name SET field_name = CASE other_field WHEN 1 THEN 'value' WHEN 2 THEN '
有两张表A和B,要求往A里面插入一条记录的同时要向B里面也插入一条记录,向B里面插入一条记录的同时也向A插入一条记录。两张表的结构不同,需要将其中几个字段对应起来。可以用下面的触发器实现。 表A的触发器: ...
插入记录时,影响插入速度的主要是索引、唯一性校验、一次插入记录条数等。根据这些情况,可以分别进行优化,本节将介绍优化插入记录速度的几种方法。 一. 对于MyISAM引擎表常见的优化方法如下: 1. 禁用索引。对于...
MySQL 当记录不存在时插入(insert if not exists) 在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的...
主要介绍了在mysql中使用一条sql语句插入多条数据,效率非常高,但是原理其实很简单,希望对大家有所帮助
//本程序的功能是实时从mysql中读取一条记录中的一个字段,插入到sqlserver 中,经过长时间的运行,基本无错了, 而这数据同步,目前没有实时性强的软件,至少1分钟,太久了,自己写了一个, //可以自己设置同步时间...
–按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: nameval memo a 2 a2(a的第二个值) a 1 a1–a的第一个值 a 3 a3:a的第三个值 b 1 b1–b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b ...
例如,往表 MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩为96.45, 编号为2 的名为Joan 的成 绩为82.99,编号为3 的名为Wang 的成绩为96.5. mysql> insert into MyClass values(1,'Tom',96.45),(2...
触发器作用> 当在SQL、MySQL数据库中一张表中插入一条记录时,触动触发器,使同一数据库的另一张表插入相同记录。 在学习的过程中,发现两者的写法是不同的。 <触发器作用> 1、在SQL中建立两张表sql_test,sql_tem...
每插入多少行提交一次,-1表示不提交,默认-1,如果设置了ac参数为1,则此参数无效。 注意:如果设置了此参数,每到此行数会执行一次commit,如果是外部调用此过程要注意所有数据会被提交 -ac all commit 0.插入成功的...