Return 来自父项的所有记录 table 如果 id = 0

Return all records from parent table if id = 0

假设我有一个 table 分配 Users 作为部门经理,例如:

UserManagerTable:

ID      UserId    DivisionId
1       23        1
2       45        0

DivisionId = 0时,表示该用户被分配为所有部门的经理 Divisions table。

我想知道查询这个 table 到 return DivisionId's 的最佳方法,如果 DivisionId = 0 那么 return 全部 DivisionIds 来自 Divisions table.

SELECT DivisionId FROM UserManagerTable...?

DivisionId
1
1
2
3
...
...
30        

最初我以为我可以做这样的事情:

SELECT
CASE 
    WHEN DivisionId  = 0 THEN (Select DivisionId FROM Division)
    ELSE DivisionId 
END AS DivisionID
FROM PoAppApprovedRequestor

但这并没有让我得到我想要的。

你的意思是这样的吗?

select d.*
from divisions d
where exists (select 1
              from usermanager um
              where um.id = @id and
                    (um.divisionid = 0 or um.divisionid = d.divisionid)
             );

您可以使用如下查询

;with newUserManagerTable as 
(
select ID,UserId,D.DivisionId from
from UserManagerTable U Join Divisions D
  on U.DivisionId=D.DivisionId or U.DivisionId=0
)

--you query here on newUserManagerTable