T-SQL,查询与父ID
问题描述:
我有这样的一个表: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