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 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");
......

参考技术A 用下面的过程可以完成所要的功能
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-两表连接列名不能相同

描述

有一个部门表departments简况如下:
 
 
有一个,部门员工关系表dept_emp简况如下:
 
有一个薪水表salaries简况如下:
 
 
请你统计各个部门的工资记录数,给出部门编码dept_no、部门名称dept_name以及部门在salaries表里面有多少条记录sum,按照dept_no升序排序,以上例子输出如下:
 
sql:dept_no需要取别名,不然dp和b表连接是两个dept_no;同样,括号中的select不能select* 因为也会包含两个emp_no.
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字段

两表合并优化

如何将两个同样的MYSQL数据库表合并。表一表二的表结构是一样只是内容一个表多了些并且有部分字段修改过

mysql 多表联合查询语句怎么写

mysql如何合并两条记录,或者将查询出来的结果相连