我想汇总所有选择结果:
我有一个select user result1 from....)
返回2列:
user results1
**** ********
user1 5
user2 8
我还有另一个查询select user result2 from....)
返回另外两列:
user results2
**** ********
user1 9
user2 5
user3 15
如何将结果与3列结合起来,以形成如下内容:
user results1 results2
**** ******** ********
user1 5 9
user2 8 5
user3 15
答案 0 :(得分:5)
如果您不确定两个表中是否存在User
值,那么您应该使用FULL JOIN
来查询表。 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];
使用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]
答案 1 :(得分:2)
尝试此查询:(因为您想要将两个单独答案的结果与查询结合起来)
SELECT b.User, a.Result1, b.Result2
from (select user, result1 from....) a
full outer join (select user, result2 from....) b
where a.user = b.user
答案 2 :(得分:2)
您应该使用FULL OUTER JOIN
select b.User, a.Result1, b.Result2
from table1 A
full outer join table2 b
where a.user = b.user
全外连接只会在表a和b +常见记录中为您提供所有记录。