`
ssxxjjii
  • 浏览: 951110 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一条mysql 存在该记录则更新,不存在则插入记录的sql

阅读更多

一条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数据库:单条数据记录的插入一.pptx

    若表名后不给出列名,则在VALUES子句中要给出每一列(除IDENTITY和timestamp类型的列)的值,如果列值为空,则值必须置为NULL,否则会出错。VALUES子句中的值: (1)表达式:可以是一个常量、变量或一个表达式,也...

    MySQL创建存储过程批量插入10万条数据

    MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...

    mysql数据库sql优化

    ### MySQL数据库SQL优化 #### 一、SQL优化 在MySQL数据库管理中,SQL查询的性能直接影响到系统的响应时间和资源消耗。通过合理的SQL优化,可以显著提高数据处理速度,降低服务器负载,提升用户体验。 ##### 1.1 ...

    Python语句实现Mysql多条插入语句

    本代码,用python语句,实现了一次插入多条sql语句。希望能对大家带来帮助。

    sql语句插入MySQL数据库操作指南

    例如,如果我们有一个名为`employees`的表,包含`id`, `name`和`position`字段,可以这样插入一条记录: ```sql INSERT INTO employees (id, name, position) VALUES (1, '张三', '经理'); ``` 在Java开发中,通常...

    mysql的插入问题 怎么获得自动增长的ID

    在插入17条记录后,删除了ID为15、16和17的记录,然后重启MySQL服务,再插入一条新的记录。 - **MyISAM**:由于MyISAM使用独立的文件存储自动增长的ID值,即使在删除了一些记录并重启MySQL服务后,新的记录ID也会...

    mysql如果数据不存在,则插入新数据,否则更新的实现方法

    MySQL 数据库提供了一种高效的方法来处理“如果数据不存在,则插入新数据,否则更新”的场景,这主要通过 `INSERT ... ON DUPLICATE KEY UPDATE` 语句实现。此语句允许我们在尝试插入数据时,如果遇到主键或唯一键...

    Mysql常用SQL语句

    * 更新记录:`update vpopmail.vpopmail set pw_privilege='1' where pw_name='haha';` 修改表结构语句 * 添加列:`alter table vpopmail add pw_haha int(10) default null;` * 删除列:`alter table vpopmail ...

    MySQL SQL语句练习题及答案

    例如,插入一条记录到 student 表: ```sql INSERT INTO student (sno, sname, ssex, sage, sdept) VALUES ('4001', '赵茵', '男', 20, 'SX'); ``` 三、删除数据 在 MySQL 中,删除数据使用 DELETE 语句。例如,...

    Mybatis 3+Mysql 实现批量插入

    批量插入的基本思想是将多条INSERT语句合并为一条语句执行,减少网络传输和事务管理开销,从而提高效率。在MyBatis中,通过`foreach`元素可以实现这一目标。`foreach`元素允许在SQL语句中进行迭代,特别适合用于构建...

    mysql 批量更新及效率对比

    在 MySQL 中批量更新记录时,使用 Replace Into 或 Insert Into ... On Duplicate Key Update 语句可以大大提高更新效率,而使用临时表的方法也可以提高效率,但是需要用户有 temporary 表的 create 权限。

    Python3 操作 MySQL 插入一条数据并返回主键 id的实例

    在Python3中操作MySQL数据库并插入一条数据,然后获取并返回这条数据的主键id是数据库编程中常见的需求。这一过程可以分为几个关键步骤:数据库连接、执行插入操作、获取主键id以及事务提交。下面详细说明每个步骤...

    MySQL批量SQL插入性能优化详解

    首先,一种有效的优化策略是通过合并多条SQL语句来一次性插入多条数据。传统的做法是逐条执行INSERT语句,而优化后的做法是将多条数据合并到一个单独的INSERT语句中,如下面所示: ```sql INSERT INTO `insert_...

    MySQL删除重复记录

    当尝试插入一条与已有记录具有相同值的行时,唯一键约束会阻止该操作并抛出错误。例如,在上述内容中,通过修改`name`字段为BINARY类型,并添加唯一键约束,可以确保`name`字段的唯一性: ```sql ALTER TABLE `user...

    MySQL批量SQL插入各种性能优化.docx

    优化的方式是将多条插入语句合并为一条,如示例所示,一次性插入多个值。这样减少了MySQL的binlog和InnoDB日志的写入次数,降低了磁盘I/O,提高了插入速度。同时,合并SQL语句还能减少SQL解析次数,节省网络传输资源...

    MySQL实现两张表数据的同步

    有两张表A和B,要求往A里面插入一条记录的同时要向B里面也插入一条记录,向B里面插入一条记录的同时也向A插入一条记录。两张表的结构不同,需要将其中几个字段对应起来。可以用下面的触发器实现。 表A的触发器: ...

    MySQL官网测试数据上百万条数据sql文件

    在本资源中,我们有一个名为"MySQL官网测试数据上百万条数据sql文件"的压缩包,它包含了一个或多个SQL脚本,这些脚本设计用于在MySQL数据库中创建并填充大量的测试数据。 SQL(Structured Query Language)是用于...

    chat聊天室增加mysql记录功能

    这样,每当用户发送一条消息,都会在MySQL数据库中创建一条新的记录。为了查询历史记录,可以编写一个API端点,从数据库中检索并返回这些记录: ```javascript app.get('/api/messages', (req, res) =&gt; { const ...

    DBHelper数据库操作类(支持OleDb、MySQL、Oracle、SQL、SQLite).zip

    执行一条计算查询结果语句,返回查询结果 执行查询语句,返回MySqlDataReader 执行查询语句,返回DataSet 执行SQL语句,返回影响的记录数 执行多条SQL语句,实现数据库事务。 执行带一个存储过程参数的的SQL语句。 ...

    MySQL SQL查询语句大全集锦(经典珍藏)

    例如,向MYTABLE表中添加一条记录,可以使用`INSERT INTO MYTABLE VALUES(’hyq’, ’M’);`。 查看数据库中存在哪些表,可以使用`SHOW TABLES;`。查看表结构可以使用`DESCRIBE 表名;`,例如`DESCRIBE MYTABLE;`。...

Global site tag (gtag.js) - Google Analytics