用可空外键连接两个表?

时间:2012-04-13 21:59:13

标签: sql-server tsql

我在下面创建了两个表,在这种情况下FK_TypeID可以为空。我想写一个查询,返回两个表的 join

如果某个行的FK_TypeID NULL ,则TypeName NULL 。我不知道如何创建这样的连接语句?

[Actions]
ActionsID
Date
Message
FK_TypeID //links to the table below

[Type]
TypeID
TypeName

我当前的状态如下所示,它只是跳过 NULL FK_TypeID

SELECT        *
FROM            Actions 
INNER JOIN      TypeName ON Actions.FK_TypeID = [Type].TypeID

非常感谢帮助!

2 个答案:

答案 0 :(得分:21)

您只需使用LEFT JOIN

即可
SELECT Actions.Date, Actions.Message, Type.TypeName
FROM Actions
    LEFT JOIN Type 
        ON Type.TypeID = Actions.FK_TypeID

如果找不到与Actions的匹配项与Type绑定,则Type中的所有列都将为NULL

Here is a good graphical visualization of the different types of joins in SQL

答案 1 :(得分:0)

使用OUTER JOIN

SELECT Actions.Date, Actions.Message, Type.TypeName 
FROM   Actions LEFT OUTER JOIN 
           Type ON Type.TypeID = Actions.FK_TypeID