我想汇总我的所有选择结果:
我有一个select user result1 from....)返回的2列:
user results1
**** ********
user1 5
user2 8
Run Code Online (Sandbox Code Playgroud)
我还有另一个查询select user result2 from....)返回另外两列:
user results2
**** ********
user1 9
user2 5
user3 15
Run Code Online (Sandbox Code Playgroud)
我如何将结果与3列一起加入以构成如下内容:
user results1 results2
**** ******** ********
user1 5 9
user2 8 5
user3 15
Run Code Online (Sandbox Code Playgroud)
如果您不确定User两个表中是否存在该值,则应使用a FULL JOIN来查询表.A FULL JOIN或FULL OUTER JOIN(OUTER是可选的)将返回两个表中的行,但如果user其中一个表中不存在,则仍会得到结果:
select
[user] = coalesce(r1.[user], r2.[user]),
r1.results1,
r2.results2
from result1 r1
full join result2 r2
on r1.[user] = r2.[user];
Run Code Online (Sandbox Code Playgroud)
使用a的问题INNER JOIN是它需要User两个表都在.如果您尝试使用RIGHT JOIN或LEFT JOIN- 那么您可能仍然无法返回所有用户及其结果.
如果您要尝试合并多个查询,则可以使用CTE或子查询:
;with query1 as
(
select [user], result1 from results1
),
query2 as
(
select [user], result2 from results2
)
select
[user] = coalesce(q1.[user], q2.[user]),
q1.result1,
q2.result2
from query1 q1
full join query2 q2
on q1.[user] = q2.[user]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |