update多表陷阱
今天同学发了个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多表陷阱的更多相关文章
- SQL SERVER Update from 使用陷阱
原文:SQL SERVER Update from 使用陷阱 update A set from A left join B on 此方法常用来使用根据一个表更新另一个表的数据,来进行数据同步更新.若 ...
- MySQL中select * for update锁表的范围
MySQL中select * for update锁表的问题 由于InnoDB预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁住被选取的资料例 ...
- MySQL中select * for update锁表的问题
MySQL中select * for update锁表的问题 由于InnoDB预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁住被选取的资料例 ...
- Oracle\MS SQL Server Update多表关联更新
原文:Oracle\MS SQL Server Update多表关联更新 一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新.而表的更新操作中,在很多情况下需要在表达式中引用要更新的表 ...
- 书写 sql 中关于 update 多表联合更新的方法
SQL Update多表联合更新的方法(1) sqlite 多表更新方法//----------------------------------update t1 set col1=t2.col1fr ...
- 170823、SQL Update多表联合更新的方法
SQL Update多表联合更新的方法 (1) sqlite 多表更新方法 update t1 set col1=t2.col1 from table1 t1 inner join table2 t2 ...
- Mysql 批量更新update的表与表之间操作
Mysql 批量更新update的表与表之间操作 一.方法一 使用User2表数据更新User表: update User as a ,User2 as b set a.role_id=b.set_v ...
- SQL update 多表连接方法
SQL Update多表联合更新的方法 () sqlite 多表更新方法 //---------------------------------- update t1 set col1=t2.col1 ...
- ssh整合思想 Spring与Hibernate的整合ssh整合相关JAR包下载 .MySQLDialect方言解决无法服务器启动自动update创建表问题
除之前的Spring相关包,还有structs2包外,还需要Hibernate的相关包 首先,Spring整合其他持久化层框架的JAR包 spring-orm-4.2.4.RELEASE.jar ( ...
随机推荐
- [DevExpress]GridControl 列头绘制Checkbox
关键代码: /// <summary> /// 为列头绘制CheckBox /// </summary> /// <param name="view" ...
- 图片grayscale(灰阶效果)webkit内核支持。
filter:gray;-webkit-filter: grayscale(100%); 置为灰阶等hove时候 -webkit-filter: grayscale(0%);显示出彩色.
- android 打开GPS的几种方式
1.在讨论打开gps的之前先看下如何检测gps的开关情况: 方式一: boolean gpsEnabled = locationManager.isProviderEnabled(LocationMa ...
- Linux 服务器如何禁止 ping 以及开启 ping
Linux 默认是允许 ping 响应的,也就是说 ping 是开启的,但 ping 有可能是网络攻击的开始之处,所以关闭 ping 可以提高服务器的安全系数.系统是否允许 ping 由2个因素决定的 ...
- json 语义分析
json 中:元素与值用冒号 ":" 隔开元素与元素用逗号 "," 隔开{} 之间是一个对象, 对象可以层层嵌套[] 表示数组, 数组元素用逗号 ", ...
- SelectedValue,SelectedValuePath,SelectedValueBinding,DisplayMemberPath讲解
无论在Winform.WPF.ASP.NET中,数据绑定是我们经常使用的一个重要技术,我们经常会把相关类动态显示绑定到UI界面中,其中有几个比较重要的属性需要大家灵活运用. 那Combox来说明有两个 ...
- The Best Rank (25)(排名算法)
To evaluate the performance of our first year CS majored students, we consider their grades of three ...
- 零基础学Python 3之环境准备
一. 配置python 3 环境 1. Python 3 下载 64位 https://www.python.org/ftp/python/3.4.2/python-3.4.2.amd64.msi 3 ...
- 4、WPF应用程序的启动
启动第一步: 启动第二步 启动第三步:
- go语言使用protobuf
网上为什么充斥着大量几乎一模一样而且不正确的教程??? 妈的打开一个关于golang和protobuf的教程,无非都是protobuf多么多么牛逼,xml多么多么傻逼,然后就是怎么安装protobuf ...