红移中的全外连接
full outer join in redshift
我有 2 tables A 和 B 带列,包含学生的一些详细信息(所有列都是整数):
答:
st_id,
st_subject_id,
乙:
st_id,
st_subject_id,
st_count1,
st_count2
st_id是学号,st_subject_id是科目号。
对于学生 ID 15,有以下条目:
答:
15 | 1
15 | 2
15 | 3
乙:
15 | 1 | 31 | 11
15 | 2 | 30 | 14
15 | 4 | 21 | 6
15 | 5 | 26 | 9
table A 中的 3 个科目和 table B 中的 4 个科目(2 个与 table A 匹配,另外 2 个额外)
我想将最终结果显示为:
15 | 1 | 31 | 11
15 | 2 | 30 | 14
15 | 3 |空 |空
15 | 4 | 21 | 6
15 | 5 | 26 | 9
这可以在 SQL 中使用完全外部联接或通过其他方法来完成吗?
我认为这样就足够了,但我现在无法测试。
合并意味着将从两个表中选择第一个非空值。
select
coalesce(A.st_id, B.st_id) st_id,
coalesce(A.st_subject_id, B.st_subject_id) st_subject_id,
B.st_count1,
B.st_count2
from A
full outer join B
on A.st_id = B.st_id and A.st_subject_id = B.st_subject_id
我有 2 tables A 和 B 带列,包含学生的一些详细信息(所有列都是整数):
答:
st_id,
st_subject_id,
乙:
st_id,
st_subject_id,
st_count1,
st_count2
st_id是学号,st_subject_id是科目号。
对于学生 ID 15,有以下条目:
答:
15 | 1
15 | 2
15 | 3
乙:
15 | 1 | 31 | 11
15 | 2 | 30 | 14
15 | 4 | 21 | 6
15 | 5 | 26 | 9
table A 中的 3 个科目和 table B 中的 4 个科目(2 个与 table A 匹配,另外 2 个额外)
我想将最终结果显示为:
15 | 1 | 31 | 11
15 | 2 | 30 | 14
15 | 3 |空 |空
15 | 4 | 21 | 6
15 | 5 | 26 | 9
这可以在 SQL 中使用完全外部联接或通过其他方法来完成吗?
我认为这样就足够了,但我现在无法测试。 合并意味着将从两个表中选择第一个非空值。
select
coalesce(A.st_id, B.st_id) st_id,
coalesce(A.st_subject_id, B.st_subject_id) st_subject_id,
B.st_count1,
B.st_count2
from A
full outer join B
on A.st_id = B.st_id and A.st_subject_id = B.st_subject_id