A表字段 id key1 value1;
B表字段 id key2 value2;
想要合并成表C 是id key value
值是id key=key1值+key2值 value=value1值+value2值 不需要根据id去重。 怎么写?
15 个解决方案
#1
第一次发帖 谢谢支持!
#2
ID有重复值的?
#3
create table c as select a.id,a.key1+b.key2 as key,a.value1+b.value2 as value
from a,b
from a,b
#4
好吧当没有这个条件 其实这个ID也不是ID 就是不用去重就行!
#5
如果这里的ID有重复,那么两张表join就会产生笛卡尔积,应该不会是你需要的结果,join表的时候有其他条件吗?
或者根据两表的主键join
#6
create table c as select a.id,a.key1+b.key2 as key,a.value1+b.value2 as value
from a,b
A表有数据:
1 re qwe
2 ll kjk
B 表数据
1 mm kill
2 nn ikk
希望的C数据是:
1 re qwe
2 ll kjk
1 mm kill
2 nn ikk
#7
create table c as select a.id,a.key1+b.key2 as key,a.value1+b.value2 as value
from a,b
这种写法存在一个问题,当一些数据不存在a中,但存在b表里面,这样的写法就会漏掉一些数据
#8
好吧当没有这个条件 其实这个ID也不是ID 就是不用去重就行!
ID有重复值的?
如果这里的ID有重复,那么两张表join就会产生笛卡尔积,应该不会是你需要的结果,join表的时候有其他条件吗?
或者根据两表的主键join
不好意思 可能我没说清楚: A表有数据:
1 re qwe
2 ll kjk
B 表数据
1 mm kill
2 nn ikk
希望的C数据是:
1 re qwe
2 ll kjk
1 mm kill
2 nn ikk
这里可以在创建一个表C的主键来标记
#9
1 re qwe
2 ll kjk
B 表数据
1 mm kill
2 nn ikk
希望的C数据是:
1 re qwe
2 ll kjk
1 mm kill
2 nn ikk
这样的需求很简单,
insert into c
select * from a
union
select * from b;
即可
#10
1 re qwe
2 ll kjk
B 表数据
1 mm kill
2 nn ikk
希望的C数据是:
1 re qwe
2 ll kjk
1 mm kill
2 nn ikk
这样的需求很简单,
insert into c
select * from a
union
select * from b;
即可
嗯 问题在于表A和表B的字段名称不是一样的。 需要怎么写?
#11
如果不用考虑重复数据,使用union all
insert into c
select * from a
union all
select * from b;
注意union (all) 前后的select 列表中的字段数量与类型须保持一致
insert into c
select * from a
union all
select * from b;
注意union (all) 前后的select 列表中的字段数量与类型须保持一致
#12
[quote=引用 10 楼 beyioto 的回复:
嗯 问题在于表A和表B的字段名称不是一样的。 需要怎么写?
没有关系的,比如
select c1,c2 from a
union all
select c3,c3 from b;
只要保证两个(或许有多个)select之后的字段数量相同
且相应位置的字段类型一致,c1与c3一致,c2与c4一致
嗯 问题在于表A和表B的字段名称不是一样的。 需要怎么写?
没有关系的,比如
select c1,c2 from a
union all
select c3,c3 from b;
只要保证两个(或许有多个)select之后的字段数量相同
且相应位置的字段类型一致,c1与c3一致,c2与c4一致
#13
用union all就可以了 字段不同可以as成相同的
#14
用union all就可以了 字段不同可以as成相同的
#15
这个不错
用union all就可以了 字段不同可以as成相同的
嗯 谢谢 yang626916777 解决了! Cool....
#1
第一次发帖 谢谢支持!
#2
ID有重复值的?
#3
create table c as select a.id,a.key1+b.key2 as key,a.value1+b.value2 as value
from a,b
from a,b
#4
ID有重复值的?
#5
好吧当没有这个条件 其实这个ID也不是ID 就是不用去重就行!
ID有重复值的?
如果这里的ID有重复,那么两张表join就会产生笛卡尔积,应该不会是你需要的结果,join表的时候有其他条件吗?
或者根据两表的主键join
#6
create table c as select a.id,a.key1+b.key2 as key,a.value1+b.value2 as value
from a,b
A表有数据:
1 re qwe
2 ll kjk
B 表数据
1 mm kill
2 nn ikk
希望的C数据是:
1 re qwe
2 ll kjk
1 mm kill
2 nn ikk
#7
create table c as select a.id,a.key1+b.key2 as key,a.value1+b.value2 as value
from a,b
这种写法存在一个问题,当一些数据不存在a中,但存在b表里面,这样的写法就会漏掉一些数据
#8
好吧当没有这个条件 其实这个ID也不是ID 就是不用去重就行!
ID有重复值的?
如果这里的ID有重复,那么两张表join就会产生笛卡尔积,应该不会是你需要的结果,join表的时候有其他条件吗?
或者根据两表的主键join
不好意思 可能我没说清楚: A表有数据:
1 re qwe
2 ll kjk
B 表数据
1 mm kill
2 nn ikk
希望的C数据是:
1 re qwe
2 ll kjk
1 mm kill
2 nn ikk
这里可以在创建一个表C的主键来标记
#9
1 re qwe
2 ll kjk
B 表数据
1 mm kill
2 nn ikk
希望的C数据是:
1 re qwe
2 ll kjk
1 mm kill
2 nn ikk
这样的需求很简单,
insert into c
select * from a
union
select * from b;
即可
#10
1 re qwe
2 ll kjk
B 表数据
1 mm kill
2 nn ikk
希望的C数据是:
1 re qwe
2 ll kjk
1 mm kill
2 nn ikk
这样的需求很简单,
insert into c
select * from a
union
select * from b;
即可
嗯 问题在于表A和表B的字段名称不是一样的。 需要怎么写?
#11
如果不用考虑重复数据,使用union all
insert into c
select * from a
union all
select * from b;
注意union (all) 前后的select 列表中的字段数量与类型须保持一致
insert into c
select * from a
union all
select * from b;
注意union (all) 前后的select 列表中的字段数量与类型须保持一致
#12
[quote=引用 10 楼 beyioto 的回复:
嗯 问题在于表A和表B的字段名称不是一样的。 需要怎么写?
没有关系的,比如
select c1,c2 from a
union all
select c3,c3 from b;
只要保证两个(或许有多个)select之后的字段数量相同
且相应位置的字段类型一致,c1与c3一致,c2与c4一致
嗯 问题在于表A和表B的字段名称不是一样的。 需要怎么写?
没有关系的,比如
select c1,c2 from a
union all
select c3,c3 from b;
只要保证两个(或许有多个)select之后的字段数量相同
且相应位置的字段类型一致,c1与c3一致,c2与c4一致
#13
用union all就可以了 字段不同可以as成相同的
#14
用union all就可以了 字段不同可以as成相同的
#15
这个不错
用union all就可以了 字段不同可以as成相同的
嗯 谢谢 yang626916777 解决了! Cool....