如何合并表 SQL
答案:4 悬赏:50 手机版
解决时间 2021-02-18 05:26
- 提问者网友:欺烟
- 2021-02-17 14:11
如何合并表 SQL
最佳答案
- 五星知识达人网友:爱难随人意
- 2021-02-17 15:11
物理合并很麻烦
直接运行查询
select * from a
union
select * from b
直接达到你的要求 重复的还没了
调用的时候嫌麻烦 直接把这个查询写成视图 跟表一样用
直接运行查询
select * from a
union
select * from b
直接达到你的要求 重复的还没了
调用的时候嫌麻烦 直接把这个查询写成视图 跟表一样用
全部回答
- 1楼网友:野慌
- 2021-02-17 18:47
方法1:
1. 新建一个临时表
create table tmp as select * from youtable group by name(name为不希望有重复的列)
2. 删除原来的表
drop table youtable
3. 重命名表
alter table tmp rename youtable
但是这个方法有个问题,由临时表转变过来的最终表,其表结构会和原来的不一致,需要手工更改。这个问题,待解决。
方法2:
1. 新建一个临时表
CREATE TABLE tmp AS SELECT * FROM youtable GROUP BY name(name为不希望有重复的列)
2. 清空原来的表
TRUNCATE TABLE youtable
3. 把临时表插入到youtable
INSERT INTO tablename SELECt * FROM temp
4. 删除临时表
DROp TABLE temp
方法3:
delete 表 where ID not in(select min(ID) from 表 group by 字段(注:重复的字段行))
1. 新建一个临时表
create table tmp as select * from youtable group by name(name为不希望有重复的列)
2. 删除原来的表
drop table youtable
3. 重命名表
alter table tmp rename youtable
但是这个方法有个问题,由临时表转变过来的最终表,其表结构会和原来的不一致,需要手工更改。这个问题,待解决。
方法2:
1. 新建一个临时表
CREATE TABLE tmp AS SELECT * FROM youtable GROUP BY name(name为不希望有重复的列)
2. 清空原来的表
TRUNCATE TABLE youtable
3. 把临时表插入到youtable
INSERT INTO tablename SELECt * FROM temp
4. 删除临时表
DROp TABLE temp
方法3:
delete 表 where ID not in(select min(ID) from 表 group by 字段(注:重复的字段行))
- 2楼网友:千夜
- 2021-02-17 17:50
你可以把表E建好先,表E的字段比表A和B多一个自增字段,表示每条记录的唯一标识,然后把A表和B表的记录插想E表:
insert into E(字段,...) select 字段...FROM A
insert into E(字段,...) select 字段...FROM A
插好后再删除重复的记录,假设E表自增ID名称为:rid,A和B相同的字段名称为ListID:
delete from E where rid in (select a.rid from E a inner join E b on a.ListID=b.ListID where a.rid>b.rid)
出来的结果表E则是唯一的,也许是罗嗦了点,但是我每次处理数据就是这样来的
而且正确率百分百
insert into E(字段,...) select 字段...FROM A
insert into E(字段,...) select 字段...FROM A
插好后再删除重复的记录,假设E表自增ID名称为:rid,A和B相同的字段名称为ListID:
delete from E where rid in (select a.rid from E a inner join E b on a.ListID=b.ListID where a.rid>b.rid)
出来的结果表E则是唯一的,也许是罗嗦了点,但是我每次处理数据就是这样来的
而且正确率百分百
- 3楼网友:撞了怀
- 2021-02-17 16:25
新建表c,结构和a一样
输入以下语句
select distinct *
from (select * from a
union
select * from b )a
然后ab表你可以自己考虑如何处理
那个group by的方式是错的,因为这里存在两张表,他那种只能让一张表内部不重复。
zengwei61的操作错误在,不光删除了重复记录,连正确记录都删除了
比如
a表有一个记录a,b表也有一个a,按照zengwei61的规则,两个a都会被删掉,一条不留。
输入以下语句
select distinct *
from (select * from a
union
select * from b )a
然后ab表你可以自己考虑如何处理
那个group by的方式是错的,因为这里存在两张表,他那种只能让一张表内部不重复。
zengwei61的操作错误在,不光删除了重复记录,连正确记录都删除了
比如
a表有一个记录a,b表也有一个a,按照zengwei61的规则,两个a都会被删掉,一条不留。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯