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
如果希望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,这是另一种说明结果未知的方式.