|
有两个表 table1,table2 有相同的字段(id,name,num)
查出两个表的所有 id,name, 把相同id 和name的 num 汇总起来? 写出sql语句
select id,name,sum(num) from
(select table1.id,table1.name,table1.num from table1 left join table2 on table1.id=table2.id and table1.name = table2.name
union all
select table2.id,table2.name,table2.num from table2 left join table1 on table1.id=table2.id and table1.name = table2.name ) temp_table group by id,name
union 和union all 的区别?
UNION 指令的目的是将两个 SQL 语句的结果合并起来。从这个角度来看, UNION 跟 JOIN 有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION 的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。
UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起。 UNION ALL 和 UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复 |
|