TSQL,连接到多个字段,其中一个字段可能为NULL

时间:2013-12-12 12:36:16

标签: tsql

我有一个简单的查询:

SELECT * FROM Products p 
LEFT JOIN SomeTable st ON st.SomeId = p.SomeId AND st.SomeOtherId = p.SomeOtherId

到目前为止一切顺利。

但是对SomeId的第一次连接可以是NULL,在这种情况下,检查应该是IS NULL,并且这是连接失败的地方。我尝试使用CASE,但也无法使用它。

我在这里错过了一些简单的东西吗?

1 个答案:

答案 0 :(得分:2)

来自Undocumented Query Plans: Equality Comparisons

SELECT *
FROM   Products p
       LEFT JOIN SomeTable st
         ON st.SomeOtherId = p.SomeOtherId
            AND EXISTS (SELECT st.SomeId INTERSECT SELECT p.SomeId)