我有以下自我参考表
Name | Id |CategoryId
--------------------------------
Gruop1 | 1 |null
--------------------------------
Group2 | 2 | 1
--------------------------------
Group3 | 3 | 1
--------------------------------
Id=int AtuoNumber
CategoryId=int nullable
我需要查询其结果是这样的(linq to sql或sql命令)
Name | Id | CategoryId | CategoryName
---------------------------------------------------------
Gruop1 | 1 | null | null
---------------------------------------------------------
Group2 | 2 | 1 | Group1
---------------------------------------------------------
Group3 | 3 | 1 | Group1
---------------------------------------------------------
我尝试了此代码,但无法正常工作
SELECT *
FROM Category e1
inner join Category e2
ON e1.Id = e2.CategoryId
任何的想法?
我猜想您缺少空值的行(其中CategoryId为null)。这是因为在任何RDBMS中,与NULL的任何比较总是返回false,即使您将null与null进行比较也是如此。
要获得所需的内容,我相信您需要一个UNION查询,并在第二部分中选择CategoryId为null的行。
SELECT e1.Name , e1.Id , e1.CategoryId, e2.Name as CategoryName
FROM Category AS e1 INNER JOIN Category AS e2 ON e1.id = e2.CategoryId
union
SELECT e1.Name , e1.Id , e1.CategoryId,null as CategoryName
FROM Category e1 where CategoryId is null
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句