博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql如何更新一个表中的某个字段值等于另一个表的某个字段值
阅读量:5287 次
发布时间:2019-06-14

本文共 1304 字,大约阅读时间需要 4 分钟。

感觉还是sql没有学好,查询资料,摘抄如下:(来源:http://www.cnblogs.com/herry52/p/5775328.html)

 

update inner join on a.bid=b.id set a.x=b.x,a.y=b.y ;

 (a,b 分别代表两个表)

 

这里使用了case when 这个小技巧来实现批量更新。

举个例子:

1
2
3
4
5
6
7
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)

这句sql的意思是,更新display_order 字段,如果id=1 则display_order 的值为3,如果id=2 则 display_order 的值为4,如果id=3 则 display_order 的值为5。

即是将条件语句写在了一起。
这里的where部分不影响代码的执行,但是会提高sql执行的效率。确保sql语句仅执行需要修改的行数,这里只有3条数据进行更新,而where子句确保只有3行数据执行。

如果更新多个值的话,只需要稍加修改:

 
01
02
03
04
05
06
07
08
09
10
11
12
UPDATE 
categories
    
SET 
display_order =
CASE 
id
        
WHEN 
1
THEN 
3
        
WHEN 
2
THEN 
4
        
WHEN 
3
THEN 
5
    
END
,
    
title =
CASE 
id
        
WHEN 
1
THEN 
'New Title 1'
        
WHEN 
2
THEN 
'New Title 2'
        
WHEN 
3
THEN 
'New Title 3'
    
END
WHERE 
id
IN 
(1,2,3)

到这里,已经完成一条mysql语句更新多条记录了。

但是要在业务中运用,需要结合服务端语言,这里以为例,构造这条mysql语句:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
$display_order 
=
array
(
    
1 => 4,
    
2 => 1,
    
3 => 2,
    
4 => 3,
    
5 => 9,
    
6 => 5,
    
7 => 8,
    
8 => 9
);
$ids 
= implode(
','
,
array_keys
(
$display_order
));
$sql 
=
"UPDATE categories SET display_order = CASE id "
;
foreach 
(
$display_order 
as 
$id 
=>
$ordinal
) {
    
$sql 
.= sprintf(
"WHEN %d THEN %d "
,
$id
,
$ordinal
);
}
$sql 
.=
"END WHERE id IN ($ids)"
;
echo 
$sql
;

转载于:https://www.cnblogs.com/nucdy/p/7405343.html

你可能感兴趣的文章
C#代码怎样在Windows窗体中显示从数据库读出的图片
查看>>
effective c++ 7: Declare destructors virtual in polymorphic base classes
查看>>
ActionBar
查看>>
Ajax上传文件到C#Action中
查看>>
实现android上解析Json格式数据功能
查看>>
最短路算法--模板
查看>>
利用树莓派3搭建可以发射无线局域网的微型服务器
查看>>
Linux查看系统的基本信息
查看>>
eclipse jsp 文字设置
查看>>
Android--多线程之AsyncTask
查看>>
cxdbImage以及图像显示
查看>>
36、UI contrast and settings
查看>>
HDU 2070 Fibbonacci Number
查看>>
骰子作业
查看>>
C++虚函数与纯虚函数用法与区别(转)
查看>>
jq中的substring(x)和substring(x,y) 字符截取用法
查看>>
BNUOJ-22868-Movie collection(树状数组)
查看>>
C# POST与Get数据
查看>>
扩展django的User的部分方法
查看>>
ISAP算法对 Dinic算法的改进
查看>>