【发布时间】:2016-03-19 10:48:06
【问题描述】:
当第一个表(FROM 表)没有至少两个其他表具有的键值时,为什么总是使用 T-SQL FULL OUTER JOIN 创建具有超过 2 个表的重复项?
create table x(a int)
create table y(a int)
create table z(a int)
INSERT INTO x values (0);
INSERT INTO y values (1);
INSERT INTO z values (1);
SELECT x_a=x.a, y_a=y.a, z_a=z.a, a=coalesce(x.a,y.a,z.a)
FROM x as x
FULL JOIN y as y
ON y.a=x.a
FULL JOIN z as z
ON z.a=x.a
ORDER BY a
产量:
x_a y_a z_a a
0 NULL NULL 0
NULL 1 NULL 1
NULL NULL 1 1
因此,我们有重复的键值,这不是我所期望的,或者如果您按顺序或按两个顺序加入表会得到什么。在这种情况下,FULL JOIN 并不是真正的关联或交流。
有没有办法以编程高效的方式解决这个问题?
【问题讨论】:
-
我不明白你的问题:/
-
那么您的预期结果是什么?
标签: sql sql-server join