簡體   English   中英

SQL Server - 當條件可能為空時如何進行內部聯接?

[英]SQL Server - How to do Inner Join when condition could be empty?

我試圖在一個帶有內部連接的查詢中直接從我的工廠 AddressID 獲取國家/地區。 我的問題是 AddressID 可能是一個空字符串。

我如何檢查並執行某種異常或類似的操作? 如果地址 ID 為空,我需要一個空字符串作為 f.Country 的結果。

這是我現在的查詢,但如果 AddressID = '' 那么該行不會顯示在我的結果中。

SELECT o.FactoryID,o.Name,o.Rating,o.ProductCategory,o.Emissions,o.LatestChanges,o.AddressID,o.ProductTags,f.Country 
FROM FactoryHistory o
INNER JOIN AddressHistory f on f.AddressID = o.AddressID
WHERE NOT o.LatestChanges = 'Deleted' AND o.IsCurrent = 1 AND f.IsCurrent = 1

我的問題中缺少某些內容或不清楚,請告訴我!

left join

SELECT o.FactoryID, o.Name, o.Rating, o.ProductCategory, o.Emissions, o.LatestChanges, o.AddressID, o.ProductTags, f.Country 
FROM FactoryHistory o
LEFT JOIN AddressHistory f on f.AddressID = o.AddressID AND f.IsCurrent = 1
WHERE NOT o.LatestChanges = 'Deleted' AND o.IsCurrent = 1

如果您仍然想過濾掉AddressID不為null工廠(假設空的意思是null )並且地址表中不存在,那么您可以在WHERE子句中添加一個條件:

WHERE 
    NOT o.LatestChanges = 'Deleted' 
    AND o.IsCurrent = 1 
    AND (o.AddressID IS NULL OR f.AddressID IS NOT NULL)

否定可能更清楚:

WHERE 
    NOT o.LatestChanges = 'Deleted' 
    AND o.IsCurrent = 1 
    AND NOT (o.AddressID IS NOT NULL AND f.AddressID IS NULL)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM