mysql使用REPLACE INTO通过两个表添加或更新第三个表案例
数据库  /  管理员 发布于 3年前   1009
我的线上的功能是用是mysql的定时任务事件 ,定时从A,B表添加或更新至C表
sql语句里面用了很多方法函数,比如
CONCAT,REPLACE ,from_UNIXTIME,DATE_ADD,DATE,IF,NOW()
等等
该功能比较完整,所以我记录一下,方便加深自己的记忆,也希望帮助有这方面需求的同学
进入主题
三表描述:
三表有关联,通过两表数据生成第三个表数据;
三表名称:
aaa A表
bbb B表
ccc C表
直接贴sql语句:
REPLACE INTO ccc SELECT
CONCAT(
A.`corperid`,
REPLACE (from_UNIXTIME( A.`addtime`,"%Y-%m"), '-', '')
) AS id,
A.corperid,
A._corperid,
A.cityid,
A._cityid,
B.remain remain,
B.`limit` `limit`,
B.`creditlimit` `creditlimit`,
B.`temcredit` `temcredit`,
'' remark,
0.00,
0.00,
0.00,
from_UNIXTIME( A.`addtime`,"%Y-%m"),
DATE_ADD(
DATE(
CONCAT(
from_UNIXTIME( A.`addtime`,"%Y-%m"),
'-',
IF (
B.expired > 0
AND B.expired <= 31,
B.expired,
'01'
)
)
),
INTERVAL 1 MONTH
) presettle,
0 `age`,
B.`_style` `style`,
B.`_belong` `saleman`,
NULL `settledate`,
NULL `invoice`,
0 `settlestatus`,
0 `partstatus`,
0 `invoicestatus`,
A.`_addtime`,
NOW() `modtime`,
NULL `param2`
FROM
`aaa` A,
`bbb` B
WHERE
service = 'Order'
AND A.corperid > 0
AND payway IN (30,31)
AND B.id = A.corperid
AND CONCAT(A.`corperid`, '_', from_UNIXTIME( A.`addtime`,"%Y-%m")) NOT IN (
SELECT
CONCAT(C.`corperid`, '_', C.`month`) AS str
FROM
`ccc` C HAVING str IS NOT NULL
)
GROUP BY
CONCAT(A.`corperid`, from_UNIXTIME( A.`addtime`,"%Y-%m"));
完
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号