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)
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
如图,所有的数据记录都被删除掉了。
删除表数据有两种方法: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语句
您好,提问者:
-- 清空全部数据,不写日志,不可恢复,速度极快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中 怎样将两个库中同样结构的两个表的数据进行合并