1
我有两个表名为User
和ParentUser
,他们之间有一对多的关系,许多方面是ParentUser
表。如何写一个查询来检查一个孩子是否有一个表中的任何孩子
我想写一个查询来传递一个parentId并获取它的所有孩子和一个列名HasChildren
来查看每个孩子是否有孩子。
下图显示了一些样本数据,需要的结果:
尝试次数:
1 - 通过Prdp
SELECT u.*,
CASE
WHEN p.ParentId IS NULL THEN 1
ELSE 0
END as HasChildren
FROM [User] u
LEFT JOIN (select distinct ParentId from ParentUser) p
ON u.UserId = p.ParentId
所有优秀的在这里,但我不能传递的parentId到它。
2-通过Juozas
DECLARE @ParentId INT = 2441;
SELECT DISTINCT
[UserId] = [u].[userid]
,[HasChildren] = CAST(ISNULL([pu].[userid], 0) AS BIT)
,[ChildrenId] = [pu].[userid]
FROM
[user] AS [u]
OUTER APPLY
(
SELECT [userid], [parentid] FROM [ParentUser] WHERE [parentid] = [u].[userid]
) AS [pu]
WHERE
[pu].[parentid] = @ParentId;
又都好,但现场HasChildren的值始终为1
u能PLZ分享您到目前为止HV试了一下查询? –
你为什么不让我们知道这已经被问过? –
可能重复[如何设置如果选择返回在SQL选择?](http://stackoverflow.com/questions/41669968/how-to-set-an-if-on-a-select-for -returning-select-in-sql) –