前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >on duplicate key update

on duplicate key update

作者头像
一个会写诗的程序员
发布2018-08-17 14:24:27
7760
发布2018-08-17 14:24:27
举报

INSERT INTO issue_change(project_id, add_date, change_amount, base_line, gmt_create , gmt_modified) SELECT p.id project_id, date(i.commit_date) add_date, @changeAmount := count() change_amount, @baseLine := (SELECT round( ( SELECT ifnull(count(),@changeAmount) FROM issue i, project p WHERE p.deparmtent_id = i.dept_no AND p.id = project_id AND YEAR (i.commit_date) = YEAR (add_date) AND MONTH (i.commit_date) = MONTH (add_date) - 1 and i.is_deleted ='n' and i.is_valid ='Y' and i.template_id != 100373 ) / ( SELECT sum(asccr.line_count) FROM aone_statistics_code_commit_record asccr, change_request cr, project p WHERE asccr.branch_url = cr.branch_url AND p.deparmtent_id = cr.dept_no AND p.id = 1 AND YEAR (asccr.commit_time) = YEAR (add_date) AND MONTH (asccr.commit_time) = MONTH (add_date) - 1 and cr.is_deleted ='n' ) * ( SELECT sum(asccr.line_count) FROM aone_statistics_code_commit_record asccr, change_request cr, project p WHERE cr.branch_url = asccr.branch_url AND p.aone_project_id = cr.aone_project_id AND p.id = project_id and cr.is_deleted ='n' ) )) base_line, now() gmt_create, now() gmt_modified FROM issue i JOIN project p on p.aone_project_id = i.aone_project_id where i.is_valid ='Y' and i.template_id != 100373 and p.id in (SELECT id from project WHERE type > 499) GROUP BY p.id, date(i.commit_date) on duplicate key update change_amount = @changeAmount, base_line = @baseLine, gmt_modified = now()

其中,project_id,add_date 两个字段联合键为唯一约束。 alter table issue_change add unique key uk_project_id_add_date (project_id,add_date);

声明SQL变量: INSERT INTO issue_change(project_id, add_date, change_amount, base_line, gmt_create , gmt_modified) SELECT p.id project_id, date(i.commit_date) add_date, @changeAmount := count(*) change_amount, @baseLine := 1 ...

on duplicate key update change_amount = @changeAmount, base_line = @baseLine, gmt_modified = now()

统计SQL sum,count

select p.name, round(sum(case when i.is_regression_stage_issue='Y' then 1 else 0 end)/count(i.id) *100,2) c from issue i

join project p on p.aone_project_id = i.aone_project_id

where p.deparmtent_id = 20862

and p.status = 1

and i.is_valid = 'Y'

and i.template_id != 100373

group by name order by c desc limit 3;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.10.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档