我想基于列组合两个表。这是一个例子:
这是我的两张桌子:
Table1 Table2
Person | salary Person | Age
Tim | 22.50 Larry | 32
Tony | 49.00 Tim | 22
John | 32.67 Tony | 44
Kim | 23.42 John | 31
我的结果表应该是:
Person | salary | Age
Larry | | 32
Tim | 22.50 | 22
Tony | 49.00 | 44
John | 32.67 | 31
Kim | 23.42 |
每个人只被添加到结果表中一次,即使他们没有工资和年龄的值
提前致谢!
答案 0 :(得分:2)
由于您已将其标记为MS-ACCESS,因此我将为MS ACCESS提供SQL代码
由于Microsoft无法执行FULL OUTER JOIN,因此您必须考虑使用现有SQL命令创建FULL OUTER JOIN的巧妙方法。以下代码应该使用上面的表格来实现:
SELECT Table1.Person, Salary, Age
FROM Table1 INNER JOIN Table2 ON Table1.Person = Table2.Person
UNION ALL
SELECT Table1.Person, Salary, Age
FROM Table1 LEFT JOIN Table2 ON Table1.Person = Table2.Person
WHERE Table2.Person Is Null
UNION ALL
SELECT Table2.Person, Salary, Age
FROM Table1 RIGHT JOIN Table2 ON Table1.Person = Table2.Person
WHERE Table1.Person Is Null
答案 1 :(得分:0)
这可以通过完全外部联接完成,但由于您使用ms访问权限,因此必须使用以下方式使用 union all 。
试试这个,如果你遇到任何困难,请告诉我。
SELECT * FROM table1 t1
LEFT JOIN
table2 t2
ON t1.person = t2.person
UNION all
SELECT * FROM table1 t1
RIGHT JOIN
table2 t2
ON t1.person = t2.person
答案 2 :(得分:0)
我没有看到你的问题究竟是什么,但这里有一个SQL查询,可以满足你的要求:
SELECT Person, salary, Age
FROM Table1 FULL OUTER JOIN Table2
WHERE Table1.Person = Table2.Person
编辑:由于缺乏对FULL OUTER JOINS的支持,这对MS-ACCESS不起作用,另外两个答案已经解释了替代方案。