【问题标题】:Return all records from parent table if id = 0如果 id = 0,则返回父表中的所有记录
【发布时间】:2018-05-22 01:49:33
【问题描述】:

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

UserManagerTable:

ID      UserId    DivisionId
1       23        1
2       45        0

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

我想知道查询此表以返回DivisionId's 的最佳方法,如果DivisionId = 0 则从Divisions 表中返回所有DivisionIds

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

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

【问题讨论】:

    标签: sql sql-server conditional union


    【解决方案1】:

    你的意思是这样的吗?

    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)
                 );
    

    【讨论】:

    • 我正要告诉他使用子查询。 ?
    【解决方案2】:

    您可以使用如下查询

    ;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 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多