NULL在连接中不匹配

Red*_*vil 2 sql sql-server join

我有2张桌子A和B.

表A.

subgroup    |   maingroup   |   
------------------------------------------  
NULL        |   A       |   
NULL        |   A       |   
Top     |   B       |   
Top     |   B       |   
Run Code Online (Sandbox Code Playgroud)

表B.

subgroup
---------------     
top             
NULL    
Run Code Online (Sandbox Code Playgroud)

我正在运行此查询.

select * from a
join b
on a.subgroup=b.subgroup
group by a.subgroup,a.maingroup,b.subgroup
Run Code Online (Sandbox Code Playgroud)

我得到了这个输出

subgroup    |   maingroup   |   subgroup    
------------------------------------------------------- 
Top     |   B       |   Top 
Run Code Online (Sandbox Code Playgroud)

我担心的是为什么NULL不匹配,并给我输出像NULL A Null.

我正在使用MSSQL

Tim*_*sen 6

如果希望NULL两个表中的值在连接期间匹配,则一个选项是在ON子句中添加显式条件:

SELECT *
FROM a INNER JOIN b
    ON a.subgroup = b.subgroup OR (a.subgroup IS NULL AND b.subgroup IS NULL)
GROUP BY a.subgroup, a.maingroup, b.subgroup
Run Code Online (Sandbox Code Playgroud)

显式连接条件的需要a.subgroup IS NULL AND b.subgroup IS NULL是比较两个NULL值的相等本身返回NULL,这是另一种说明结果未知的方式.