mysql一次性加入记录_MySql 一次性插入多条记录 与 记录重复处理

一、如何一次插入多条记录

开始的做法:

foreach ($data as $user) {

$sql = " INSERT INTO `user` (`uid`,`uname`) VALUES (".$user['id'].",".$user['uname'].")";

mysql_query($sql);

}

这种方法执行多条语句,请求数据库次数也就多,效率比较低。

现在做法:

$sql = " INSERT INTO `user` (`uid`,`uname`) VALUES ";

foreach ($data as $user) {

$sql .= "(".$user['id'].",".$user['uname']."),";

}

//去掉最后一个逗号

$sql = rtrim($sql, ',');

mysql_query($sql);

这样做只需请求一次数据库,效率相对较高。

二、避免插入重复记录

需要将多个field设置Unique,以便确定唯一性。

使用 replace

REPLACE INTO

org_tag_game

(

tid,

gindex,

score,

status,

recmmend,

play_time,

add_count

)

VALUES

%s;

使用 ignore

INSERT IGNORE INTO

org_tag_game

(

tid,

gindex,

score,

status,

recmmend,

play_time,

add_count

)

VALUES

%s;

以上两种方法都是碰到有重复记录时跳过。

使用ON DUPLICATE KEY UPDATE

INSERT INTO

org_tag_game

(

tid,

gindex,

score,

status,

recmmend,

play_time,

add_count

)

VALUES

(

%d,

%d,

%d,

1,

0,

0,

1

)

ON DUPLICATE KEY UPDATE

status = 1,

add_count = add_count + 1

;

此方法碰到相同记录时,会执行性 ON DUPLICATE KEY UPDATE 后面的语句。

当然,还有另外一种方法就是,每次插入记录,先执行 select 语句判断该记录是否已经存在。

大家可以根据自己的需求来采取相应的方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值