MySQL記錄存在則更新,不存在則插入

2021-08-30 02:55:06 字數 1472 閱讀 6589

create table `tb_file_authorize` (

`authorize_id` int(11) not null auto_increment,

`str_id` int(11) default null comment '使用者標識',

`file_id` int(11) default null comment '檔案標識',

`right_id` int(11) default null comment '許可權標識',

`catalog_id` int(11) default null comment '目錄標識',

`catalog_index` varchar(100) character set utf8 collate utf8_bin default null comment '目錄索引標識',

`expired_date` varchar(30) default null comment '過期時間',

`limit_times` int(11) default null comment '限制次數',

`open_times` int(11) default null comment '已經開啟次數',

`start_date` varchar(30) default null comment '開始時間',

`end_date` varchar(30) default null comment '結束時間',

`grant_user` varchar(30) default null,

primary key (`authorize_id`),

key `file_right_index` (`str_id`,`file_id`),

unique key `update_or_insert` (`str_id`,`file_id`)

) engine=innodb default charset=utf8;

我遇到的問題:

str_id標識使用者的唯一標識,fiile_id為檔案的唯一標識,此表為中間表str_id,與file_id確定right_id

當該表中存在str_id與file_id的記錄時,更新right_id,否則插入一條新的記錄,sql語句如下:

insert into tb_file_authorize(str_id,file_id,right_id,catalog_id,catalog_index)

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 記錄不存在插入 和 存在則更新

想要插入一條資料,要避免重複插入,又不想折騰兩回資料庫連線操作,可以參考如下辦法 語法 此處 aa,bb,cc 為要插入的 a,b,c 列的值 insert into table1 a,b,c select aa,bb,cc from dual where notexists select cfro...

MySql 不存在則插入,存在則更新或忽略

前言 在插入資料時,可能需要忽略或替換掉重複的資料 依據某個字段 這時可以在應用層處理,也可以使用複雜的 sql 語句來處理 如果僅僅知道一些簡單的 sql 語法的話 當然也可以使用一些簡單的 sql 語法,不過它並不是通用所有的資料庫型別。以下所有例項僅針對mysql而言,並不能隨意用於其它資料庫...

mysql存在更新不存在新增

1 插入一條資料,存在則不操作,不存在就插入 必須現有唯一鍵 使用insert ignore語句 insert ignore into table col1,col2 values a b 例如插入資料 insert ignore into user info last name,first nam...