我有這樣的一個表:T-SQL,查詢與父ID
我想寫這樣的查詢:如果我選擇DictID其中DictParentID爲NULL(這意味着這是父ID),我想列出所有DictID與DictParentID =我的DictID(在這種情況下10240)和10240. 在其他情況下(當我選擇DictID DictParentID不是NULL時)我只想列出這個DictID。
我有寫這個查詢的問題。由於
我有這樣的一個表:T-SQL,查詢與父ID
我想寫這樣的查詢:如果我選擇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
簡單高效,使用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);
很好,很棒。謝啦!! – user3688227