MySQL两表相同字段合并、更新,JAVA实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL两表相同字段合并、更新,JAVA实现相关的知识,希望对你有一定的参考价值。
有两张表A和B,两个表结构相同,例如:
表A:id word num
1 "good" 3
2 "bad" 5
3 "ok" 2
表B:id word num
1 "good" 5
2 "ok" 3
3 "ask" 4
两个表的主键都是id和word
要实现的功能:1、将两表中word字段相同的记录合并,并将num字段的和更新到表B中;
2、若表B中存在着表A中没有的记录,则将该记录插入表A中;
更新后的表A: id word num
1 “good” 8(=3+5)
2 "bad" 5
3 “ok” 5(=2+3)
4 "ask" 4
我知道可以用update和insert语句实现,但是自己上网查了好多,也写了几种,都不成功,哪位可以告诉我这几条SQL语句该怎么写?我用的环境是Eclipse+mysql。
用下面的过程可以完成所要的功能
create procedure proc1begin
create temporary table tt(word varchar(50), num int);
insert into tt(word,num) select word,num from 表A union select word,num from 表B;
delete from 表A;
insert into 表A(word,num) select word, sum(num) as num from tt group by word;
drop table tt;
end追问
不好意思啊,我不太明白上面的代码。我用的是那种try-catch语句的模板,貌似没有create procedure这种用法,可以再解释一下吗?
另外,我的思路是将insert和update这两个过程分开,先update,然后再insert。但是那个update语句实在不知道该怎么写。能指点一下不?
1、你先在MYSQL中创建该过程,然后在JAVA中调用该过程。
2、你也可以在JAVA中连接上MYSQL后,依次执行3-7行这5条语句。
stmt.executeUpdate("create temporary table tt(word varchar(50), num int)");
stmt.executeUpdate("insert into tt(word,num) select word,num from 表A union select word,num from 表B");
......
create procedure proc1begin create temporary table tt(word varchar(50), num int); insert into tt(word,num) select word,num from 表A union select word,num from 表B;dele...查看全文>>
mysql-两表连接列名不能相同
描述
select dp.dept_no,dp.dept_name,count(b.dd) as sums from departments as dp inner join ( select sal.emp_no,de.dept_no as dd from salaries as sal inner join dept_emp as de on sal.emp_no=de.emp_no )as b on dp.dept_no=b.dd group by b.dd order by dp.dept_no
以上是关于MySQL两表相同字段合并、更新,JAVA实现的主要内容,如果未能解决你的问题,请参考以下文章
SQL查询结果一字段相同合并,另一字段为数字和逗号合并并去重
MySQL里的Date型和Time型两个字段,如何用PYTHON合并为一个Datetime字段