0

我试图找出一个查询,它将列出特定列中的每一行以及另一列中的关联数据:

在此处输入图像描述

所以我想要 name 列中的每个值以及另一个表中它旁边的列。下面的值 44 是一个主键,所以如果该列中有一个值,我想从另一个表中获取它所属的主键的列的名称。如果它是无效的,我不想返回任何东西或无效。

如果我做:

SELECT [Theme].[Name], [ThemeType].[Type] 
FROM [Theme], [ThemeType] 
WHERE [Theme].[ThemeTypeId] = [ThemeType].[PK_ThemeType]

它只返回两者都存在的值。我怎样才能让两者都回来?

4

1 回答 1

4

要得到这个,你需要一个 LEFT JOIN AKA LEFT OUTER JOIN

SELECT [Theme].[Name], [ThemeType].[Type] 
FROM [Theme] 
Left Outer Join [ThemeType] on [Theme].[ThemeTypeId] = [ThemeType].[PK_ThemeType]

您可以了解连接的工作原理,以及如何使用下图显示不同的结果。

在此处输入图像描述

图片归功于SQL 连接的可视化表示

于 2013-07-25T18:41:01.020 回答