`

MySQL记录存在则更新,不存在则插入

 
阅读更多
Sql代码  收藏代码
  1. CREATE TABLE `tb_file_authorize` (  
  2.   `authorize_id` int(11) NOT NULL auto_increment,  
  3.   `str_id` int(11) default NULL COMMENT '用户标识',  
  4.   `file_id` int(11) default NULL COMMENT '文件标识',  
  5.   `right_id` int(11) default NULL COMMENT '权限标识',  
  6.   `catalog_id` int(11) default NULL COMMENT '目录标识',  
  7.   `catalog_index` varchar(100) character set utf8 collate utf8_bin default NULL COMMENT '目录索引标识',  
  8.   `expired_date` varchar(30) default NULL COMMENT '过期时间',  
  9.   `limit_times` int(11) default NULL COMMENT '限制次数',  
  10.   `open_times` int(11) default NULL COMMENT '已经打开次数',  
  11.   `start_date` varchar(30) default NULL COMMENT '开始时间',  
  12.   `end_date` varchar(30) default NULL COMMENT '结束时间',  
  13.   `grant_user` varchar(30) default NULL,  
  14.   PRIMARY KEY  (`authorize_id`),  
  15.   KEY `file_right_index` (`str_id`,`file_id`),  
  16.   UNIQUE KEY `update_or_insert` (`str_id`,`file_id`)  
  17. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  

 

我遇到的问题:

   str_id标识用户的唯一标识,fiile_id为文件的唯一标识,此表为中间表str_id,与file_id确定right_id

当该表中存在str_id与file_id的记录时,更新right_id,否则插入一条新的记录,SQL语句如下:

 

Java代码  收藏代码
  1. INSERT into tb_file_authorize(str_id,file_id,right_id,catalog_id,catalog_index)  
  2. values ('35','20','2048','1','1') ON DUPLICATE KEY UPDATE right_id='1024'  

 

此sql的意思判断是否存在str_id为30,file_id为20的记录,存在则更新right_id为1024,否则插入新的记录.

 

注意:使用该方法,建表的时候要定义 UNIQUE KEY `update_or_insert` (`str_id`,`file_id`),这样才能保证语句能够正常执行。

MySQL记录存在则更新,不存在则插入

分享到:
评论

相关推荐

    mysql 记录不存在时插入 记录存在则更新的实现方法

    相信很多人都需要用到这个语句,请看下文:(在4.1以后的版本才有效)

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

    非常不错的功能,主要用于更新特定的记录,如果存在这条记录则更新一下,如果不存在则插入记录。应用于配置文件等。

    Mysql – 如果数据库表中的记录存在相同记录则不插入记录,反之插入。

    根据设置了主索引 PRIMARY 的字段进行判断,如果字段相同则不做插入记录操作,反之插入。 准备 (1)一个数据库表,结构如下: (2)必须设置 需要依靠此字段来判断记录是否相同的 主索引字段,我设置的如下: 假设...

    mysql清除记录数

    1.mysql清空表语句后,新插入的语句会ID会以之前存在的序号记录下去,使用truncate命令清除记录,新插入的语句从1开始 示例: mysql> select id from t1; +----+ | id | +----+ | 1 | | 2 | | 3 | +----+ 清空表 ...

    kettle 增量更新并标识删除的记录

    ETL之kettle 增量更新并标识删除的记录 不删除原始数据

    mysql 判断记录是否存在方法比较

    把数据写入到数据库的时,常常会碰到先要检测要插入的记录是否存在,然后决定是否要写入。

    MySQL命令大全

    MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...

    MySQL中实现插入或更新操作(类似Oracle的merge语句)

    如果需要在MySQL中实现记录不存在则insert,不存在则update操作。可以使用以下语句: 更新一个字段: INSERT INTO tbl (columnA,columnB,columnC) VALUES (1,2,3) ON DUPLICATE KEY UPDATE columnA=IF(columnB>0,...

    mysql insert if not exists防止插入重复记录的方法

    MySQL 当记录不存在时插入(insert if not exists) 在 MySQL 中,插入(insert)一条记录很简单,但是一些特殊应用,在插入记录前,需要检查这条记录是否已经存在,只有当记录不存在时才执行插入操作,本文介绍的...

    mysql常用命令

    如,增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令: grant select,insert,update,delete on *.* to ...

    MySQL建立唯一索引实现插入重复自动更新

    给大家分享的是当向数据插入数据时,判断字段是不是存在,存在执行更新操作,如果不存在就执行插入操作的方法,有需要的朋友们可以参考借鉴。

    MySQL死锁套路之唯一索引下批量插入顺序不一致

    前言 死锁的本质是资源竞争,批量插入如果顺序不一致很容易导致死锁,我们来分析一下这个情况。为了方便演示,把批量...在记录不存在的情况下,两个同样顺序的批量 insert 同时执行,第二个会进行锁等待状态 t1 t

    MYSQL常用命令大全

    MySql的用户管理是通过 User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...

    最全Mysql数据库命令

    例如,往表 MyClass中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩为96.45, 编号为2 的名为Joan 的成 绩为82.99,编号为3 的名为Wang 的成绩为96.5. mysql> insert into MyClass values(1,'Tom',96.45),(2...

    mysql数据库my.cnf配置文件

    # MySQL每打开一个表,都会读入一些数据到table_open_cache缓存中,当MySQL在这个缓存中找不到相应信息时,才会去磁盘上读取。默认值64 # 假定系统有200个并发连接,则需将此参数设置为200*N(N为每个连接所需的文件...

    mysql 替换字段部分内容及mysql 替换函数replace()

    [mysql]replace的用法(替换某字段部分内容) [mysql]replace的用法 1.replace into  replace into table (id,name) values(‘1′,’aa’),(‘2′,... 如果存在相同的值则不会插入数据 2.replace(object,search,rep

    MySQL查询结果复制到新表的方法(更新、插入)

    MySQL中可以将查询结果复制到另外的一张表中,复制的话通常有两种情况,一种是更新已有的数据,另一种是插入一条新记录。下面通过例子来说明。首先构建两个测试表。 表t1: 表t2: 1、如果t2表中存在score值,将...

Global site tag (gtag.js) - Google Analytics