update inner join mysql_Mysql update inner join

一:需求

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 = ?;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

function click_click事件的累加问题解决

click事件的 累加问题解决:$判断是否隐藏:hidden.c>span 只包含儿子.c span 包含儿子和孙子data-*嵌入自定义数据 .data(to)获取数据remove是移除标签 delete删除数组元素each()函数$(".layui-table-total .layui-table-cell").each(functi…

mysql stragg_如何在MySQL中將子查詢行的結果顯示為一列?

I have three tables Category, Movies and RelCatMov我有三個表分類,電影和RelCatMovCategory-tablecategoryid, categoryName1 thriller2 supsense3 romantic4 action5 sci-fiMovies-tablemovieid, movieName1 Avataar2 Titanic3 NinjaAssassinRelCatMov-tablecategoryid, Mo…

知道python语言应用2020答案_热点:大学moocPython语言基础与应用答案

2020年智慧树网课答案为您详细解读azMisb热点:大学moocPython语言基础与应用答案的详情,题主的教授应该是想要同学们找出一个值得研究和讨论的theory,简单来说就是你论文探讨的中心。然后需要你们定topic,然后搜索大量靠谱的资料,…

timestamp 转换 date mysql_MySQL时间函数 | 时间戳和日期之间得转换

一、时间戳转日期select FROM_UNIXTIME(1606028010, %Y-%m-%d %H:%i:%s);二、日期转时间戳select unix_timestamp(2018-01-15 09:45:16);三、时间戳格式化十位时间戳转为固定格式(yyyy-MM-dd HH:mm:ss)日期1.格式规定%M 月名字(January……December)%W 星期名字(Sunday……Satu…

python 窗口程序开发课程_从零开始学Python - 第019课:使用PyCharm开发Python应用程序...

坚持学习完前18课的小伙伴应该已经感受到了,随着我们对Python语言的认知在逐步加深,我们写的代码也越来越复杂了。“工欲善其事,必先利其器”,如果希望能够更快更好的写出代码,选择一个称手的开发工具是很有必要的。虽…

MySQL服务迁移到opt_mysql文件*.opt *.frm *.MYI *.MYD的迁移

注意:这里使用mysql 5.1,Ubuntu 11.10在机器A的/var/lib/mysql/文件夹下面有数据库smallone的文件。现在想把smallone下面对应的*.MYD *.frm *.MYI直接迁移到机器B的/var/lib/mysql/smallone下面1,直接在mysql中查看是否迁移成功在/etc/init.d文件夹下面…

python是一种动态语言这意味着_Python如何能成为全球最受欢迎的编程语言?该不该学Python?...

全文共3304字,预计学习时长10分钟 图源:(Python logo courtesy of https 有一种语言在过去十年受喜爱度一路飙升,成为最受欢迎的一种编程语言,它是谁? 千呼万唤始出来,没错,它就是我们的老弟Pyt…

mysql远程压力测试_mysql压力测试脚本实例

本文实例讲述了mysql压力测试的脚本,分享给大家供大家参考。具体如下:创建表deptcreate table dept( /*部门表*/deptno mediumint unsigned not null default 0,dname varchar(20) not null default "",loc varchar(13) not null defaul…

python pyc文件是啥_python pyc文件

这么编译:>>> import py_compile>>> py_compile.compile(rtest2.py)这么运行:MacBook-Air:Downloads huangyong$ python test2.pyc中国成都需要批量编译的话,这样:import compileallcompileall.compile_dir(rH:…

python生成csv文件带水印_Python从CSV文件导入数据和生成简单图表

我们已经完成Python的基础环境搭建工作,现在我们尝试导入CSV数据 我们准备一个csv测试数据,文件名是csv-test-data.csv数据。我们将文件传到Linux上准备导入的代码我们运行代码首先导入csv模块以便能访问所需的方法用with语句打开数据文件并把它绑定到对…

python处理csv文件案例_让繁琐的工作自动化——python处理CSV文件

让繁琐的工作自动化——python处理CSV文件CSV:CSV文件是一种简化的电子表格,不同于Excle(二进制文件),CSV是纯文本文件。1.环境python3.8pycharm2020.12.读取本期实例数据haha,18,10.0jiji,16,12.1lala,17,11.9papa,11,13.3首先导入csv模块&a…

python爬取js加载的数据_JS动态加载数据不会爬?老司机教你两个方法爬取想要的数据...

学习Python的人绝大部分都是在用Python做爬虫,毕竟对于爬虫而言Python是不二选。但是一般简单的静态页面网站还是很好爬取的,对于很多动态加载的网站就不知道怎么办了,今天小编就给大家介绍两种爬取js加载的动态数据,希望对爬虫方…

python实现坐标求取_根据相机位姿求指定点的世界坐标及其python实现

Authorshaniadolphin求解目的本文将展示位姿估计的一种应用,即通过单目相机对环境进行测量。简单来说,本文的工作就是利用下面的两幅图,在已知P1、P2、P3、P4四点世界坐标的情况下,计算出其它点的世界坐标。如图所示,一…

c# treeview查找并选中节点_最通俗易懂的二叉查找树(BST)详解

原来来自 呆萌数据结构-06二叉查找树​imoegirl.com二叉查找树(Binary Search Tree),简写BST,是满足某些条件的特殊二叉树。任何一个节点的左子树上的点,都必须小于当前节点。任何一个节点的右子树上的点,都…

服务器损坏mysql修复_云服务器mysql数据库损坏修复mysql

有的时候因为各种原因导致mysql数据库损坏,我们可以使用mysql自带的mysqlcheck命令来快速修复所有的数据库或者特定的数据库,检查优化并修复所有的数据库.1.先在运行中输入CMD,启动命令行.2.进入Mysql的Bin目录:D:\VHostData\MySQL5.1\bin,(这个路径在数据库的安装目…

bootstrap jquery alert_bootstrap第七课

bootstrap 模态框bootstrap是一个非常酷的前端开发框架,它可以大大的简化我们日常开发当中的功能与样式。它有非常漂亮的css组件和非常实用的控件供我们使用。接下来我们来看看bootstrap的内容吧!首先大家要引入bootstrap的css和js可以在这里下载&#x…

java dao模式_Java DAO 模式

DAO 模式DAO (DataAccessobjects 数据存取对象)是指位于业务逻辑和持久化数据之间实现对持久化数据的访问。通俗来讲,就是将数据库操作都封装起来。对外提供相应的接口在面向对象设计过程中,有一些"套路”用于解决特定问题称为模式。DAO 模式提供了…

java 闭包_公司新来的女实习生问我什么是闭包?

作者:霍语佳来源:前端食堂观感度:?????口味:冰镇西瓜烹饪时间:20min撩妹守则第一条,女孩子都喜欢童话故事。那就先来讲一个童话故事~// 有一个公主// 她生活在一个充满冒险的奇妙世界里// 她遇见了她的…

织梦 mysql 配置文件_MySQL集群配置

一、介绍这篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行。注意!虽然这是基于2台服务器的MySQL集群,但也必须有额外的第三台服务器作为管理节点,但这台服务器可以在集群…

python tcp协议_python 网络编程 -- Tcp协议

Socket是网络编程的一个抽象概念。通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可。客户端大多数连接都是可靠的TCP连接。创建TCP连接时,主动发起连接的叫客户端&a…