MYSQL中同一个数据库中的两个表中的数据怎样合并?(只需要合并某个字段。)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL中同一个数据库中的两个表中的数据怎样合并?(只需要合并某个字段。)相关的知识,希望对你有一定的参考价值。

同一个数据库中有2个表,1个是AAA,一个是BBB,结构完全一致:
===================
AAA结构如下:
ID username post
1 JACKY 85
2 CANDY 95
===================
BBB结构如下:
ID username post
1 JACKY 33
2 CANDY 25
===================
我现在想把BBB中的post字段和AAA中的post字段合并(如合并后JACKY的post是118,candy的post是120,其他字段如ID和username保持不变),我试过用phpmyadmin先导出AAA的post字段,然后导入到BBB的post字段,不成功,提示键值已存在之类的错误。

因为涉及到好几千个ID,希望给出SQL语句,因为我本人对mysql语句并不太了解,谢谢!如能解决,送上100分。
补充一下,数据结构没说明白,分别是:
1111(数据库)_11(表)_AAA(字段)
1111(数据库)_22(表)_BBB(字段)

1、忽略表之间的关联关系
ALTER TABLE db2.dbo.table NOCHECK CONSTRAINT 关系名

2、--将没有重复的数据合并

insert into db2.dbo.table(field1,field2...) select field1,field2... from db1.dbo.table a where a.username not in (select username from db2.dbo.table)

3、将重复的数据写入临时表
select field1,field2... into 新的临时表 from db1.dbo.table a where a.username in (select username from db2.dbo.table) 

参考技术A 1.直接把结果更新在aaa表中的语句如下
update aaa
set post = (select sum_post from (select aaa.ID,(aaa.post+bbb.post) sum_post from aaa,bbb where aaa.ID=bbb.ID) t1 where t1.ID=a.ID)
where exists (select 1 from bbb where aaa.ID =bbb.ID);

2.直接查询显示的方法参见上楼;

3.新建ccc表:
create table ccc as( select id,username,sum(post) sum_post from
(select id,username,post from aaa
union all
select id,username,post from bbb)
group by id,username; )
参考技术B username 字段 是否是唯一字段 如果是唯一字段可以使用左连接的方式 UPDATE aaa 表 或BBB 表
update aaa LEFT JOIN bbb ON bbb.username =aaa.username set aaa.post=aaa.post+bbb.post.
或者 update bbb LEFT JOIN aaa ON aaa.username =bbb.username set bbb.post=aaa.post+bbb.post.
如果不是唯一字段的话 不能用username 作条件左连接了 如果ID是对应的用ID 左连接
update bbb LEFT JOIN aaa ON aaa.id =bbb.id set bbb.post=aaa.post+bbb.post.
参考技术C --建新表CCC
create table CCC
(ID int not null primary key
username varchar(20) not null
post int not null)
--将AAA中的数据复制到CCC里
declare @id int,@name varchar(20),@post int
declare yb cursor for
select id,username,post from AAA
yb open
fetch yb into @id,@name,@post
while @@fetch_status=0
begin
set identity_insert CCC on
inser into CCC(id,username,post) values(@id,@name,@post)
fetch yb into @id,@name,@post
end
close yb
deallocate yb
--CCC与BBB求和并更新到CCC表中
declare @sum int,@id1 int
declare yb1 cursor for
select B.id,B.post+C.post from BBB B join CCC C on B.id=C.id
yb1 open
fetch yb1 into @id1,@sum
while @@fetch_status=0
begin
set identity_insert CCC on
inser into CCC(post) values(@sum) where id=@id1
fetch yb into @sum
end
close yb1
deallocate yb1
参考技术D insert into table CCC
select aaa.username ,(aaa.post+bbb.post) as post
from _aaa表 , _bbb表
where aaa.username=bbb.username

怎样删除mysql一个表中的全部数据

    01

    如图,比如我有一张数据表studentinfo,我想要删除studentid为1009的这条数据。

    02

    我们可以直接点击设计界面下方的减号来删除数据。如图,选中数据,然后点击减号按钮。

    03

    点击减号之后,就会弹出一个提示框,问你是否要删除这条数据。

    04

    之后,选中的数据记录就从数据表中删除掉了。

    05

    也可以使用SQL语句来删除数据记录,点击查询菜单下的“新建查询”。

    06

    如图,在其中输入delete from studentinfo where studentid=1001;
    这样就可以删除studentid为1001 的数据记录了。
    Delete from 后面接的是表名,where后面接的是条件,
    因为我是要删除studentinfo表中studentid等于1001的记录,所以就这样写。

    07

    之后,点击运行按钮来执行删除操作。

    08

    如图,回到之前的界面,需要点击一下下边的刷新按钮。

    09

    这样,我们就可以看到1001的那条记录已经被删除掉了。

    10

    而如果想要删除全部的数据记录,可以直接输入查询语句:delete from studentinfo;
    运行之后就可以删除全部的数据记录了。

    11

    如图,所有的数据记录都被删除掉了。

参考技术A

删除表数据有两种方法:delete和truncate。具体语句如下:

一、RUNCATE TABLE name  :

删除表中的所有行,而不记录单个行删除操作。 在这个指令之下,表格中的资料会完全消失,可是表格本身会继续存在。 

TRUNCATE TABLE 的语法:TRUNCATE TABLE name ,参数 name 是要截断的表的名称或要删除其全部行的表的名称。 

二、Delete from tablename where 1=1

1、delete语法:

DELETE FROM 表名称 WHERE 列名称 = 值。

2、删除所有行:

可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:DELETE FROM table_name。

扩展资料:

truncate和delete的共同点及区别:

1、 truncate和 delete只删除数据不删除表的结构(定义) 。

2、delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发。

truncate是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger。

3、delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动 。truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage;   truncate会将高水线复位(回到最开始)。

4、速度,一般来说: truncate >delete 。

参考资料:

百度百科--Truncate Table

百度百科--DELETE语句

参考技术B

您好,提问者:

-- 清空全部数据,不写日志,不可恢复,速度极快
truncate table 表名;

-- 清空全部数据,写日志,数据可恢复,速度慢
delete from 表名

本回答被提问者和网友采纳
参考技术C 删除mysql一个表中的全部数据分为两种情况。一种是删除表内数据及表结构,另一种是只删除表内数据。
1、删除表内数据及表结构:
drop table 表名;
2、删除表内数据可用两种语句,分别是delete语句和truncate语句:
delete from 表名;
truncate table 表名;
在效率上truncate的效率远远大于delete的效率。
参考技术D delete from tablename;
truncate tablename;

以上是关于MYSQL中同一个数据库中的两个表中的数据怎样合并?(只需要合并某个字段。)的主要内容,如果未能解决你的问题,请参考以下文章

在SQLserver中 怎样将两个库中同样结构的两个表的数据进行合并

有两个mysql表,两个表中的字段一样,其中一个表更新的时候,另一个表也会更新,怎样做到呢?

sql数据库中,如何将一个表中的多列数字合并为一列

怎样删除mysql一个表中的全部数据

在两个EXCEL表格中怎么把相关联的数据合并到一起

使用where子句将两个表中的数据合并到一个表中