mysql批量插入不重複資料

2021-10-24 23:51:10 字數 3329 閱讀 3382

1.設定唯一建

前提是:有唯一建可用,but基本很難有這樣的場景。

datum有唯一建。

create

table

`datum`

(`id`

int(11)

notnull

auto_increment

,`mid`

int(11)

notnull

default

'0',

`rong_liang`

varchar

(255

)collate utf8mb4_general_ci not

null

default'',

`yong_liang`

varchar

(255

)collate utf8mb4_general_ci not

null

default'',

`level

`varchar

(255

)collate utf8mb4_general_ci not

null

default'',

`adapt_niandu`

varchar

(255

)collate utf8mb4_general_ci not

null

default'',

`perrfect_niandu`

varchar

(255

)collate utf8mb4_general_ci not

null

default'',

`datum_name`

varchar

(255

)collate utf8mb4_general_ci not

null

default'',

`oil_type`

varchar

(255

)character

set utf8mb4 collate utf8mb4_general_ci not

null

default'',

`buchong2`

varchar

(255

)collate utf8mb4_general_ci not

null

default'',

`buchong3`

varchar

(255

)character

set utf8mb4 collate utf8mb4_general_ci not

null

default'',

primary

key(

`id`),

unique

key`mid`

(`mid`))

engine

=innodb

auto_increment

=1048582

default

charset

=utf8mb4 collate

=utf8mb4_general_ci;

//插入語句

2.使用臨時表dual

前提:組裝好資料resultlist,每行資料是乙個dual,使用

union all成為一張新錶a,插入的時候排除掉tables裡面已經有的資料。

insert

into

tables

(audit_id,acc_id,mid,model_memo_id,operate_type,common_group_id,position_id,creator,modifier)

select

#,#,mid,memoid,#,#,positionid,#,# from(

select

*from

("resultlist" item=

"res" separator=

"union all"

>

select

# mid, # memoid, # positionid from dual

<

/foreach>

) a where

notexists

(select

1from

tables w

where w.acc_id=

# and w.audit_id =# and w.mid=a.mid and w.model_memo_id=a.memoid and w.position_id = a.positionid and w.is_deleted = 0)) b

從另一張表插入不重複的資料插入到新錶

insert

into table2(audit_id, acc_id, mid, position_id, model_memo_id, operate_type)

select

*from

(select audit_id, acc_id, mid, position_id, model_memo_id, operate_type

from table1 a

where a.audit_id =

26and a.is_deleted =

0and

notexists

(select

1from table2 b

where b.is_deleted =

0and b.audit_id = a.audit_id and a.acc_id = b.acc_id and a.mid = b.mid

and a.position_id = b.position_id and a.model_memo_id = b.model_memo_id and a.operate_type = b.operate_type)

) c

eg:

insert into tb(newsid,a,b) select newsid,a,b from ta a where not exists(select 1 from tb b where a.newsid=b.newsid and a.a=b.a)

diango 批量匯入不重複資料

去年研究匯入資料的時候寫了乙個批量匯入資料的指令碼,但有個問題,如果匯入這批資料在資料庫中已經存在,那麼我們匯入的資料不就重複了麼,本文就討論如何解決這個問題?程式如下 coding utf 8 import os os.environ.setdefault django settings modu...

MySQL 避免重複資料的批量插入與批量更新

我們在向資料庫裡批量插入資料的時候,會遇到要將原有主鍵或者unique索引所在記錄更新的情況,而如果沒有主鍵或者unique索引衝突的時候,直接執行插入操作。這種情況下,有三種方式執行 直接每條select,判斷,然後insert,毫無疑問,這是最笨的方法了,不斷的查詢判斷,有主鍵或索引衝突,執行u...

mysql批量新增重複資料

很多時候我們都需要大量的資料,下面就來講一講mysql如何新增大量資料 此方法效率不一定會高 但是這個方法一定是最簡單的 首先,建一張表,字段沒有要求 測試用,我就隨便準備寫了兩個字段 users表 欄位name和pwd 然後我們事先新增幾條資料 然後我們執行批量新增的語句 insert into ...