update多表陷阱

来源:互联网 发布:剑网三有mac版吗 编辑:程序博客网 时间:2024/05/17 21:39

今天同学发了个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

0 0
原创粉丝点击