T-SQL,查询与父ID

T-SQL,查询与父ID

问题描述:

我有这样的一个表:T-SQL,查询与父ID

enter image description here

我想写这样的查询:如果我选择DictID其中DictParentID为NULL(这意味着这是父ID),我想列出所有DictID与DictParentID =我的DictID(在这种情况下10240)和10240. 在其他情况下(当我选择DictID DictParentID不是NULL时)我只想列出这个DictID。

我有写这个查询的问题。由于

简单高效,使用UNION ALL

SELECT DictiId, DictParentId 
FROM dbo.TableName t 
WHERE DictId = @DictId 

UNION ALL 

SELECT DictiId, DictParentId 
FROM dbo.TableName t 
WHERE DictParentId = @DictId 

如果您想订购它,你可以使用子查询:

SELECT x.DictiId, x.DictParentId FROM 
(
    SELECT DictiId, DictParentId 
    FROM dbo.TableName t 
    WHERE DictId = @DictId 

    UNION ALL 

    SELECT DictiId, DictParentId 
    FROM dbo.TableName t 
    WHERE DictParentId = @DictId 
) x 
ORDER BY x.DictiId, x.DictParentId 
+0

很好,很棒。谢啦!! – user3688227

简单高效,使用OR

SELECT 
    DictiId, DictParentId 
FROM 
    dbo.TableName t 
WHERE 
    DictId = @DictId OR 
    DictParentId = @DictId 

你可以翻转我们的好朋友in条款效果很好:

SELECT DictiId, DictParentId 
FROM dbo.TableName t 
WHERE @DictId in (DictId, DictParentId);