簡體   English   中英

SQL Server查詢 - 如果不匹配,則返回null值

[英]SQL Server query - return null value if no match

我遇到了一個我出於某種原因無法弄清楚的問題。 我正在嘗試編寫一個連接兩個表的查詢,其中可能在表中找不到匹配項。 如:

SELECT 
    Table1.IDField, Table2.IDField
FROM 
    Table1
LEFT OUTER JOIN 
    Table2 ON Table1.PersonID = Table2.PersonID
WHERE 
    (Table1.IDField = '12345')
    AND (Table2.Category = 'Foo')

如果表Table2沒有匹配項,則表示沒有返回任何內容。 但是,如果沒有匹配並且仍然從Table1返回值,我需要它為該列返回NULL。

我用我能想到的一切改變了JOIN ,但無濟於事。

Table2.Category可以包含多個其他值,因此執行OR IS NULL類型的交易將不起作用。

所以,如果Table2.Category = 'Foo'沒有匹配,我仍然需要它返回:

Table1 | Table2
----------------
 12345 |  NULL

有什么建議?

table2的條件移出WHERE子句並移入JOIN

SELECT 
    Table1.IDField, Table2.IDField
FROM 
    Table1
LEFT OUTER JOIN Table2 
    ON Table1.PersonID = Table2.PersonID
    AND Table2.Category = 'Foo'
WHERE 
    Table1.IDField = '12345'

嘗試這個:

LEFT OUTER JOIN
Table2 ON Table1.PesonID = Table2.PersonID
AND Table2.Category = 'Foo'

然后從WHERE子句中刪除'Foo'行

問題不在於連接本身,而在於與table2匹配的where子句中的要求。 我用coalese(table2.category,'Foo')='Foo'來解決這個問題。 這樣,如果table2為null,它仍將匹配。

暫無
暫無

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

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