批量插入一张表的数据,并且生成不同的uuid 字

必须分开执行 如果

 代码如下

 

附一些删除重复记录的方法

merge into GOVERNMENTSYNCUSERRECORDzj711 t1
using (select b.id,b.orgcoding,b.loginname from governmentusermappingzj711 b) t
on (t1.orgcoding=t.orgcoding and t1.loginname=t.loginname)
when matched then
update set t1.mappingid = t.id;

delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

orcal截取字符串  如  bmfw.snb.qz  这个字符串  截取得到未bmfw  

注释:当您使用ON DUPLICATE KEY UPDATE时,DELAYED选项被忽略。

select substr(loginname,0,INSTR(loginname,'.', 1, 1)-1) from GOVERNMENTSYNCUSERRECORD;   loginname为GOVERNMENTSYNCUSERRECORD表的一个字段

代码如下:

 

So with added UNIQUE INDEX to the (auctionid, order) pair have this workable code:

delete from GOVERNMENTORGMAPPINGzj711 where id in(
select id from GOVERNMENTORGMAPPINGzj711 where ( syncorgname,orgcoding) in(
select syncorgname,orgcoding from GOVERNMENTORGMAPPINGzj711
group by syncorgname,orgcoding having count(1)>1)
and
id not in (select max(id) from GOVERNMENTORGMAPPINGzj711
group by syncorgname,orgcoding having count(*)>1)
)

代码如下:

这样生成的uuid所有数据均为相同

如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用:

 

复制代码

INSERT INTO party_branch
SELECT UUID(),m.name,m.secreta_name,m.contacts_name,m.contact_phon,m.category_name,m.type,'admin','admin', NOW(),NOW() FROM mypary_branch m

  这样当有重复记录就会忽略,执行后返回数字0

 

另外,在 SQL Server 中可以这样处理:

INSERT INTO party_branch
SELECT  REPLACE(UUID(),'-',''),m.name,m.secreta_name,m.contacts_name,m.contact_phon,m.category_name,m.type,'admin','admin', NOW(),NOW() FROM mypary_branch m

尝试把新行插入到表中

 

复制代码

INSTR(loginname,'.', 1, 1)表示从第一开始查找第一个出现.的位置

mysql防止重复插入记录方法总结

UPDATE party_branch SET id =REPLACE(id,'-','')

代码如下:

orcal批量更新

 代码如下

 INSERT INTO `class` SELECT * FROM `class1` ON DUPLICATE KEY UPDATE `class`.`course`=`class1`.`course`

 代码如下

如果a=1 OR b=2与多个行向匹配,则只有一个行被更新。通常,您应该尽量避免对带有多个唯一关键字的表使用ON DUPLICATE KEY子句。

INSERT IGNORE INTO
selections
(
selections.auctionid,
selections.order,
selections.title,
startamount
)
SELECT
auctions.id,
1,
PlayerA,
0.01
FROM
auctions, game
WHERE
auctions.BetfairMark = game.BetfairMarketID
;

INSERT IGNORE INTO
elections
(
selections.auctionid,
selections.order,
selections.title,
startamount
)
SELECT
auctions.id,
2,
PlayerB,
0.01
FROM
auctions, game
WHERE
auctions.BetfairMark = game.BetfairMarketID

php防止重复插入记录实例

代码如下:

select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

REPLACE的运行与INSERT很相像,但是如果旧记录与新记录有相同的值,则在新记录被插入之前,旧记录被删除,即:

本语句与以下两个语句作用相同:

if not exists (select phone from t where phone= '1')   insert into t(phone, update_time) values('1', getdate()) else    update t set update_time = getdate() where phone= '1'

 INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('test9@163.com', '99999', '9999');

 代码如下

代码如下:

复制代码

复制代码

再贴一个例子:

 代码如下

 ==============================

复制代码

 代码如下

  方案二:使用Replace

查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断

 

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录

 代码如下

这个例子是我在实际项目中用到的:是将一个表的数据导入到另外一个表中,数据的重复性就得考虑(如下),唯一索引为:email:

复制代码

复制代码

复制代码

代码如下:

防止mysql重复插入记录的方法有很多种,常用的是ignore,Replace,ON DUPLICATE KEY UPDATE,当然我们也可以在php中加以判断了。

 代码如下

 代码如下

复制代码

本文由金沙官网线上发布于数据库,转载请注明出处:批量插入一张表的数据,并且生成不同的uuid 字

您可能还会对下面的文章感兴趣: