我有以下表格:
w2001
Code Name
1 abc
2 xyz
3 pqr
7 OPW
和第二张表:
w2011
Code Name
4 abc
2 xyz
5 pqr
6 MNS
我想要以下结果:
Code2001 Code2011 Name
1 4 abc
2 2 xyz
3 5 pqr
7 - OPW
- 6 MNS
我尝试过这个问题:
select distinct b.name as 2001
from w2001 a, w2011 b
where b.name not in ( select a.name from w2001 )
这没用,也试过了:
select a.code as Code2001 , b.code as Code2011 ,*
from w2001 a, w2011 b
where a.name = b.name
但这也不起作用;我应该如何得到结果?
答案 0 :(得分:3)
使用其他数据库,您可以使用FULL OUTER JOIN
来获得所需的结果。但是,Access不支持完全连接。幸运的是,您可UNION
LEFT JOIN
RIGHT JOIN
来完成同样的事情。
SELECT
w2001.Code AS Code2001,
w2011.Code AS Code2011,
w2001.Name
FROM
w2001 LEFT JOIN w2011
ON w2001.Name = w2011.Name
UNION
SELECT
w2001.Code AS Code2001,
w2011.Code AS Code2011,
w2011.Name
FROM
w2001 RIGHT JOIN w2011
ON w2001.Name = w2011.Name;
两个SELECT
语句类似。除了连接类型,另一个区别是第一个返回w2001.Name
而第二个返回w2011.Name
。
答案 1 :(得分:1)
FULL OUTER JOIN
可能就是你所追求的。它返回左表table1
和右表table2
中的所有行。
FULL OUTER JOIN
关键字结合了LEFT
和RIGHT
联接的结果。
SQL FULL OUTER JOIN
语法:
SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name
因此,在您的情况下,您可能需要以下内容:
SELECT w2001.Code AS Code2001, w2011.Code AS Code2011
FROM W2001
FULL OUTER JOIN W2011
ON W2001.Name = W2011.Name