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) –