请帮助我解决这些讨厌的联接

时间:2014-05-06 15:50:40

标签: sql ms-access

假设我有2个表,一个有3个字段(id,name,num),另一个有两个(id,num)。

t1:

1       | assassin  | #1
1       | assassin  | #2  
2       | vampire   | (null) 
3       | zombie    | #1
3       | zombie    | #2
(null)  | zombie    | #3
4       | wizard    | (null)

t2:

1       | #1
1       | #2  
2       | (null)
3       | #1
3       | #2
(null)  | #3
4       | (null)

我试图加入这些表:

SELECT      t2.id, t1.name, t2.num 
FROM        t1 
INNER JOIN  t2  ON  t2.id = t1.id 
                AND t2.num = t1.num

执行此语句时,该表仅显示没有空值的记录。为什么?加入这两个表的正确方法是什么?在两个条件下内连接表是否合适? (我正在使用vb.net& ms访问btw)。

2 个答案:

答案 0 :(得分:1)

尝试使用Left Join代替Inner Join

Inner Join仅返回已加入的行。

Left Join返回“左”表中的所有行,无论它们是否加入另一个表。

答案 1 :(得分:1)

您无法在inner join null上使用null,因为null = null与自身不匹配(outer join返回false,IOW)。您需要使用{{1}}代替。

请参阅this SQL Server answer on joining with nulls