数据库SQL,将两张表合并为一张表

将表table1、table2合并为表table3
table1:
id name value
1 阅读 5
1 视频 7
1 游戏 7
2 阅读 1
2 游戏 3

table2
id name value
1 阅读 8
1 视频 9
1 游戏 2
2 阅读 11
3 视频 4

table3:
id name value1 value2
1 阅读 5 8
1 视频 7 9
1 游戏 7 2
2 阅读 1 11
2 游戏 3 0
3 视频 0 4

select 字段,字段2,isnull(表1.字段3,0),表2.字段3 from (表1 left join 表2 on 表1.字段=表2.字段 and 表1.字段2=表2.字段2)
不知道你能不能看懂,就是用left join连接两张表用0替换null值

select case when t1.id is null then t2.id else t1.id end id,
case when t1.name is null then t2.name else t1.name end name,nvl(t1.value,0),nvl(t2.value,0) from t1 FULL join t2 on t1.id=t2.id and t1.name=t2.name

mysql 环境,full join不支持的时候用左右连接来处理,还是楼上的简单。


INSERT INTO table3

SELECT IFNULL(t1.id,t2.id) id,IFNULL(t1.name,t2.name) NAME,IFNULL(t1.value,'0') value1,IFNULL(t2.value,'0') value2

FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.id AND t1.name = t2.name

UNION

SELECT IFNULL(t1.id,t2.id) id,IFNULL(t1.name,t2.name) NAME,IFNULL(t1.value,'0') value1,IFNULL(t2.value,'0') value2

FROM table1 t1 RIGHT JOIN table2 t2 ON t1.id = t2.id AND t1.name = t2.name