批量更新mysql

$display_order = [$this->data[‘user_id‘]=>‘1‘, $this->token_info[‘id‘]=>‘0‘];
$params = array_keys($display_order);
$place_holders = implode(‘,‘, array_fill(0, count($params), ‘?‘));
$sql = "UPDATE home_users SET is_admin = CASE user_id ";
foreach ($display_order as $user_id => $is_admin) {
    $sql .= sprintf("WHEN %d THEN ‘%s‘ ", $user_id, $is_admin);
}
$sql .= "END WHERE user_id IN ($place_holders) AND home_id = ?";
$params[] = $this->data[‘home_id‘];
Model::home_users()->executeBySql($sql,$params);
时间: 2024-11-05 11:35:59

批量更新mysql的相关文章

批量更新mysql表数据

1.批量更新表中某个字段,如果表比较大,每条记录都执行一条update,1s执行10条数据,10万条数据就要1W秒,3个多小时. 2.可以用case when 来实现,模板如下 UPDATE categories SET display_order = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 END WHERE id IN (1,2,3); ID 是条件字段,WHEN 相当于where,THEN 表示要更新的字段设置成的值. 如果有多个

mysql批量更新

UPDATE ta INNER JOIN tb ON ta.id=tb.id SET ta.col1=tb.col1, ta.col2=tb.col2 以上代码用来批量更新mysql中的记录

mysql 批量更新

bs_user 表,我们叫他 bu表, 字段user_id,len_id, think_wellUser 表,我们简称为tw表,中的user_id ,len_id 其中tw表的user_id 是bu表user_id的子集.bu表的len_id有乱码,tw表len_id没有乱码, 需求是将bu乱码的len_id,更新 采用如下sql语句, update bs_user,think_wellUserset bs_user.len_id=think_wellUser.len_idwhere bs_us

mysql进阶 十四 批量更新与批量更新多条记录的不同值实现方法

mysql 批量更新与批量更新多条记录的不同值实现方法 在mysql中批量更新我们可能使用update,replace into来操作,下面详细介绍mysql批量更新与性能. 批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 如果更新同一字段为同一个值,mysql也很简单,修改下where即可: UPDATE mytable SE

MySQL批量更新不同表中的数据

今天翻到以前写的批量更新表中的数据的存储过程,故在此做一下记录. 当时MySQL中的表名具有如下特征,即根据需求将业务表类型分为了公有.私有和临时三种类型,即不同的业务对应三张表,而所做的是区分出是什么类型(公有.私有.临时)的业务表对数据的固定字段做统一规律的处理. 下面为当时所编写的存储过程: BEGIN DECLARE done INT; DECLARE v_table_name VARCHAR(100); DECLARE v_disable VARCHAR(100); DECLARE v

mysql 批量更新与批量更新多条记录的不同值实现方法

在mysql中批量更新我们可能使用update,replace into来操作,下面来给各位详细介绍mysql 批量更新与性能吧! mysql更新语句很简单,更新一条数据的某个字段,一般这样写: 复制代码代码如下: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 如果更新同一字段为同一个值,mysql也很简单,修改下where即可: 复制代码代码如下: UPDATE mytable SET myfie

mysql语句:批量更新多条记录的不同值[转]

mysql语句:批量更新多条记录的不同值[转] mysql语句:批量更新多条记录的不同值 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: 1 UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 如果更新同一字段为同一个值,mysql也很简单,修改下where即可: 1 UPDATE mytable SET myfield = 'value' WHERE other_field in ('o

mysql批量更新数据(性能优化)

最近做的游戏,上线后出了不少问题,所以我就经常去查数据库数据,翻各种日志等,但是在查询的时候发现好蛋疼,有些地方的时间是写 "2016-08-11 20:13:02"这种格式,有些地方的时间是写 "1470917582000"这种格式,然后多张表数据进行对比的时候就很蛋疼,我得不停进行时间转换,恶心得不行.最后实在忍不了,我要统一时间格式(由于时间都是单独一个字段记录,所以比较好处理),两种格式,很明显,对于查数据来说,第一种格式更直观,所以就决定了,将数据库日志类

MySql快速插入以及批量更新

插入: MySql提供了可以一次插入多条数据的用法: [sql] INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9),(10,11,12)...;  在程序中可以通过循环,添加Values对应的列表,最后使用一次executeUpdate完成插入操作.但是Mysql语句并不是越长越好,MYsql语句长度有限制,可以查看mysql的配置文件my.in中max_allowed_packet属性,并进行相应设置. 更新: Mysql中没