Union all

来源:百度知道 编辑:UC知道 时间:2024/09/22 12:48:49
Select Id,Rank from A Union Select Id,Rank from B
此句,如何实现结果集中当A表,B表中出现相同Id时,Rank可以相加,即新Rank
=A.Rank + B.Rank

可以先把A表与B表合并为一个表,再根据 ID 分组。
select Id,sum(Rank) AS Rank from
(select Id,Rank from A
Union all
Select Id,Rank from B) TMP
group by Id

这种要用到cross join的连接查询,因为已经跨表,所以不能用简单的union来实现.

select a.id, a.rank from a
union all
select b.id, b.rank + isnull(a.rank, 0) from b left join a on b.id = a.id

select a.id,a.rank+b.rank Rank
from a,b
where a.id=b.id;

Select Id,Rank from A
Union ALL
Select Id,Rank from B