2013-09-22 688 views
4

我不認爲這可以完成,但是因爲我是一位使用MSSM工作室的新手,對於SQL數據庫我想我會問的。返回值的SQL查詢或者如果找不到,則返回null

我有2個表並使用視圖查看匹配的記錄。表2有時沒有匹配的記錄,所以自然不會顯示在我看來。例如:

A-1 
B-2 
C-3 

我真正需要的是一種觀點給我看的匹配記錄的內容如表2,但在同一時間告訴我,什麼也沒有發現其他:

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

這樣我就可以準確地按照需要準備我的視圖,但可以通過表2中未找到的視圖。希望有人可以幫助我找到一種方法來完成此操作。提前致謝。

-------- ----------編輯

行,所以第一個表(GoogleBusinessData)holds.amongst其他的事情,客戶的網站。第二個表格(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中顯示該號碼,但如果沒有找到,則顯示「未找到」。

+0

LEFT JOIN可以做這種事情。但是如果我們要幫助您,您需要提供兩張表中的一些示例數據。 –

回答

7

使用LEFT JOIN的Table 1和表2

之間在SELECT列表(也稱爲 LEFT OUTER JOIN

,並使用

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

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)中沒有找到任何匹配的記錄。

+0

啊......工作過。它就像LEFT JOIN一樣簡單嗎?或者您發佈的代碼是否將「null」更改爲「Not Found」? – user2803146

+0

左連接提供相關數據,CASE語句只是決定每行顯示的內容。 –