首页 > 其他 > 详细

update多表陷阱

时间:2015-09-25 09:32:24      阅读:237      评论:0      收藏:0      [点我收藏+]

今天同学发了个sql题目 
A1表 B1表 
id num id snum 
1 10 1 90 
2 2000 3 4000 
3 30 
B表的数据插入A表当中 
最后的结果 
A表 
1 90 
2 2000 
3 4000 
当时也没有多想,感觉一条insert语句搞不定。但是同学说就一条语句。 
最后请教是B1表就这些数据,没有其他的。这是面试题。不能想复杂了,是我想太多了。 
update就可以了 
CREATE TABLE A1 ( 
id VARCHAR(12) NULL DEFAULT NULL COLLATE ‘utf8_general_ci’, 
num VARCHAR(12) NULL DEFAULT NULL 

COLLATE=’utf8_general_ci’ 
ENGINE=InnoDB 

CREATE TABLE B1 ( 
id VARCHAR(12) NULL DEFAULT NULL COLLATE ‘utf8_general_ci’, 
snum VARCHAR(12) NULL DEFAULT NULL 

COLLATE=’utf8_general_ci’ 
ENGINE=InnoDB 

首先这里是一条sql实现多行更新。 
update A1,B1 set A1.num = XXXX where A1.id=B1.id 
其次需要判断大小 
if(A1.num>B1.snum,A1.num,B1.snum) 
最后语句 
update A1,B1 set A1.num = if(A1.num>B1.snum,A1.num,B1.snum) where A1.id=B1.id

update多表陷阱

原文:http://www.cnblogs.com/rick-he/p/4837189.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!