MySQL两表相同字段合并、更新,JAVA实现
有两张表A和B,两个表结构相同,例如:表A:idwordnum1"good"32"bad"53"ok"2表B:idwordnum1"good"52"ok"33"ask"4...
有两张表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。 展开
表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。 展开
2个回答
展开全部
用下面的过程可以完成所要的功能
create procedure proc1
begin
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");
......
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询