联接自参考表

E_N_Y

我有以下自我参考表

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

任何的想法?

克里斯08

我猜想您缺少空值的行(其中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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章