4

我不认为这是可以做到的,但由于我是一个使用 MSSM 工作室作为 SQL 数据库的新手,所以我想我还是会问。

我有 2 个表并使用视图来查看匹配的记录。表 2 有时没有匹配的记录,所以它们自然不会显示在我的视图中。例如:

A-1
B-2
C-3

我真正需要的是视图向我显示表 2 中匹配记录的内容,但同时向我显示没有找到其他记录:

A-1
B-2
C-3
D-"Not Found"
E-"Not Found"

通过这种方式,我可以完全按照我的需要准备我的视图,但可以浏览表 2 中没有的视图。希望有人可以帮助我找到完成这项工作的方法。提前致谢。

- - - - 编辑 - - - - -

好的,所以第一个表(GoogleBusinessData)包含。除其他外,客户网站。第二个表 (EmailTable) 包含许多电子邮件地址。公共链接是 BusWebsite 列。

SELECT dbo.GoogleBusinessData.BusWebsite, dbo.EmailTable.EmailNumberOfEmails
FROM   dbo.GoogleBusinessData 
INNER JOIN dbo.EmailTable ON dbo.GoogleBusinessData.BusWebsite = dbo.EmailTable.EmailWebsite

这里的问题是它会列出网站匹配时出现的电子邮件,但我希望能够列出来自 dbo.GoogleBusinessData.BusWebsite 的所有数据,如果它与 EmailTable.EmailWebsite 匹配,那么它将显示dbo.EmailTable.EmailNumberOfEmails 中的数字,但如果未找到,则显示“未找到”。

4

1 回答 1

7

在 Table1 和 Table2 之间使用 a LEFT JOIN(也称为 a )LEFT OUTER JOIN

并使用

CASE WHEN Table2.Key IS NULL THEN 'Not Found' ELSE Table2.RelatedColumn END

在您的 SELECT 列表中。

SELECT 
    gbd.BusWebsite, 
    CASE WHEN et.EmailNumberOfEmails IS NULL 
         THEN 'Not Found' 
         ELSE et.EmailNumberOfEmails
    END
    et.EmailNumberOfEmails 
FROM dbo.GoogleBusinessData gbd
LEFT JOIN dbo.EmailTable et ON gbd.BusWebsite = et.EmailWebsite

表 A 和 B 的左外连接(或简称为左连接)的结果始终包含“左”表 (A) 的所有记录,即使连接条件在“右”表中找不到任何匹配记录(乙)。

于 2013-09-22T00:07:12.233 回答