MySql更新多条数据不建议使用UPDATE语句
2014-07-29 10:58
856 查看
我们知道当插入多条数据的时候insert支持多条语句:
但是对于更新记录,由于update语法不支持一次更新多条记录,只能一条一条执行:
这里问题就出现了,倘若这个update list非常大时(譬如说5000条),这个执行率可想而知。
这就要介绍一下在MySql中INSERT语法具有一个条件DUPLICATE KEY UPDATE,这个语法和适合用在需要判断记录是否存在,不存在则插入存在则更新的记录。
具体的语法可以参见:http://dev.mysql.com/doc/refman/5.0/en/insert.html
基于上面这种情况,针对更新记录,仍然使用insert语句,不过限制主键重复时,更新字段。如下:
注意:ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法!
INSERT INTO t_member(id,name,email)VALUES (1,'nick','nick@126.com'), (4,'angel','angel@163.com'), (7,'brank','ba198@126.com');
但是对于更新记录,由于update语法不支持一次更新多条记录,只能一条一条执行:
UPDATE t_member SET name='nick',email='nick@126.com' WHEREid=1; UPDATE t_member SET name='angel',email='angel@163.com' WHEREid=4; UPDATE t_member SET name='brank',email='ba198@126.com' WHEREid=7;
这里问题就出现了,倘若这个update list非常大时(譬如说5000条),这个执行率可想而知。
这就要介绍一下在MySql中INSERT语法具有一个条件DUPLICATE KEY UPDATE,这个语法和适合用在需要判断记录是否存在,不存在则插入存在则更新的记录。
具体的语法可以参见:http://dev.mysql.com/doc/refman/5.0/en/insert.html
基于上面这种情况,针对更新记录,仍然使用insert语句,不过限制主键重复时,更新字段。如下:
INSERT INTO t_member(id,name,email) VALUES (1,'nick','nick@126.com'), (4,'angel','angel@163.com'), (7,'brank','ba198@126.com') ON DUPLICATE KEY UPDATE name=VALUES(name),email=VALUES(email);
注意:ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法!
相关文章推荐
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?
- 使用 TOP 子句限制UPDATE 语句更新的数据
- MySql中使用INSERT INTO语句更新多条数据的例子
- MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?
- mysql使用update更新数据遇到的错误:Data truncation: Truncated incorrect DOUBLE value:Mysql Update
- MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?
- 使用 TOP 子句限制UPDATE 语句更新的数据
- MySql中使用INSERT INTO语句更新多条数据的例子
- MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?
- Access使用参数化UPDATE数据时,数据无法更新的问题,要按照参数顺序赋值
- mysql多表join时候update更新数据的方法
- mysql从一个表提取数据更新另外一个表(Cross Table Update with MySQL)
- mysql使用别名的update语句
- 使用C语言访问MySQL数据 —— 执行SQL语句(3)
- 在C#使用SqlDataAdapter的Update更新数据