一:需求

A表和B表的表结构相同,A表是历史表,B表是增量数据表;想要根据关联条件更新A表中的数据。

二:表结构

CREATE TABLE `A` (

`id` bigint(20) NOT NULL AUTO_INCREMENT,

`bid` bigint(20) NOT NULL ,

`sid` bigint(20) NOT NULL ,

`grid` bigint(20) NOT NULL ,

`age` bigint(20) NOT NULL ,

`pv` bigint(20) NOT NULL ,

`uv` bigint(20) NOT NULL ,

`pay_count` bigint(20) NOT NULL,

`charge_amount` bigint(20) NOT NULL ,

`last_pay_count` bigint(20) NOT NULL ,

`last_charge_amount` bigint(20) NOT NULL ,

`ftime` bigint(20) NOT NULL ,

`dtime` bigint(20) NOT NULL DEFAULT ‘0‘ COMMENT ‘详细时间(yyyyMMddHH)‘

PRIMARY KEY (`id`,`ftime`),

KEY `IX_FTIME` (`ftime`) USING BTREE,

KEY `IX_HTIME` (`htime`) USING BTREE,

KEY `IX_DTIME` (`dtime`),

KEY `IX_B_F_S_G` (`bid`,`ftime`,`sid`,`grid`),

KEY `IX_B_S_G` (`bid`,`sid`,`grid`),

KEY `IX_B_D_S` (`bid`,`dtime`,`sid`)

) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

注意:mysql 只有2种索引(BTREE 和 HASH)

三:注意

1、只更新A表的部分字段:pv、uv和pay_amount

2、确定唯一一条记录的关联字段是:bid、sid、dtime、qrid

四:实现

1、使用inner join实现

UPDATE A as aa

INNER JOIN B as bb ON bb.bid = aa.bid

AND bb.sid=aa.sid

AND bb.grid=aa.grid

SET aa.pv=bb.pv,

aa.uv=bb.uv,

aa.pay_amount=bb.pay_amount

WHERE aa.dtime=?

AND aa.bid=? ;

2、使用exists实现

UPDATE A aa

SET aa.pv = (SELECT bb.pv

FROM B bb

WHERE bb.bid = aa.bid

AND bb.sid = aa.sid

AND bb.grid = aa.grid),

aa.uv = (SELECT bb.uv

FROM B bb

WHERE bb.bid = aa.bid

AND bb.sid = aa.sid

AND bb.grid = aa.grid),

aa.pay_amount = (SELECT bb.pay_amount

FROM B bb

WHERE bb.bid = aa.bid

AND bb.sid = aa.sid

AND bb.grid = aa.grid)

WHERE EXISTS (SELECT 1

FROM B bb

WHERE bb.bid = aa.bid

AND bb.sid = aa.sid

AND bb.grid = aa.grid)

AND aa.dtime = ?

AND aa.bid = ?;

update inner join mysql_Mysql update inner join相关推荐

  1. 【转载】SQL中使用update inner join和delete inner join

    原文地址:SQL中使用update inner join和delete inner join Update XXX set XXX where 这种写法大家肯定都知道,才发现update和delete ...

  2. mysql update join 更新_mysql多表join时候update更新数据的方法 | 很文博客

    如果item表的name字段为''就用resource_library 表的resource_name字段前面加上字符串Review更新它,他们的关联关系在表resource_review_link中 ...

  3. Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别

    对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对 于Select出来的结果集是什么样子有点不是很清楚.Codi ...

  4. 图解SQL inner join、left join、right join、full outer join、union、union all的区别

    对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对 于Select出来的结果集是什么样子有点不是很清楚.Codi ...

  5. 1.19.5.4.流上的Join、常规Join、时间区间Join、时态表Join、基于处理时间的时态Join、时态表函数Join、用法

    1.19.5.4.流上的Join 1.19.5.4.1.常规Join 1.19.5.4.2.时间区间Join 1.19.5.4.3.时态表Join 1.19.5.4.4.基于处理时间的时态Join 1 ...

  6. left join 和 left outer join 的区别

    老是混淆,做个笔记,转自:https://www.cnblogs.com/xieqian111/p/5735977.html left join 和 left outer join 的区别 通俗的讲: ...

  7. left join 和 left outer join 有什么区别

    left join 是left outer join的简写,left join默认是outer属性的. Inner Join 逻辑运算符返回满足第一个(顶端)输入与第二个(底端)输入联接的每一行.这个 ...

  8. left join 与left outer join的区别

    joinn 语句有三种: inner join, left outer join 和 right outer join 都可以简写,分别为join,left join,right join. 转载于: ...

  9. 转载:left join和left semi join的联系和区别

    1.联系 他们都是 hive join 方式的一种,join on 属于 common join(shuffle join/reduce join),而 left semi join 则属于 map ...

最新文章

  1. AI一分钟 | 谷歌租下北京 6000 平米写字楼,或将发展AI项目;工信部就个人信息保护约谈百度、支付宝、今日头条
  2. 在 Ubuntu 14.04/15.04 上配置 Node JS v4.0.0
  3. ipv6host更新
  4. ABAP 时间月份的F4帮助
  5. 零基础学Python(第八章 for循环·超重点,本章会有几个简单的单层循环练习,后续会有针对算法的单独章节)
  6. Qt学习笔记-----事件
  7. voxblox建图教程
  8. VS2013 int main(int argc, char** argv)参数传递
  9. JavaScript基本资料
  10. Carryon的字符串
  11. python导入模块中的对象_详解Python项目开发时自定义模块中对象的导入和使用
  12. 拉普拉斯矩阵(Laplacian Matrix) 及半正定性证明
  13. TMS320F28335 和 VS1003B 之间的通信
  14. 11.4王者荣耀服务器维护中,英雄战迹11号更新维护公告 删档最后一更
  15. 联想笔记本加固态后没声音(关于固态那些事)
  16. 手握13本书、老司机超出120年经验的公众号
  17. 用卷积神经网络实现对小狗品种的识别
  18. ML-Agents案例之双人足球
  19. 将 Jar 包打成一个 Jar 包
  20. MAC系统 如何显示隐藏的文件(文件夹)

热门文章

  1. linux 软件包管理设置,Linux速通08 网络原理及基础设置、软件包管理
  2. 深入jvm虚拟机第4版_深入理解JVM虚拟机
  3. [蓝桥杯][算法提高]和谐宿舍2(记忆化搜索)
  4. Longest k-Good Segment CodeForces - 616D(尺取法)
  5. [蓝桥杯][算法提高VIP]种树(dfs)
  6. Mac osx系统中virtual box 中的Ubuntu系统的全屏显示问题解决
  7. 深度学习之卷积神经网络(2)卷积神经网络结构
  8. org.apache.hadoop.hbase.ClockOutOfSyncException
  9. 基于python的HOG+SVM目标检测算法实现
  10. 两个实用的Python的装饰器