2016-07-29 120 views
0

我有這樣的一個表:T-SQL,查詢與父ID

enter image description here

我想寫這樣的查詢:如果我選擇DictID其中DictParentID爲NULL(這意味着這是父ID),我想列出所有DictID與DictParentID =我的DictID(在這種情況下10240)和10240. 在其他情況下(當我選擇DictID DictParentID不是NULL時)我只想列出這個DictID。

我有寫這個查詢的問題。由於

回答

1

簡單高效,使用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

0

簡單高效,使用OR

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

你可以翻轉我們的好朋友in條款效果很好:

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