如何在没有UNION的情况下为其子项选择一个父行和其他行?

Tim*_*ord 4 t-sql sql-server union parent-child

我有一个父表和子表,并希望创建一个select语句,给定父ID,返回该父项的和每个子项的其他行.当存在一个或多个子节点时,执行左连接并不会为父提供一行.我知道这可以通过UNION完成,但我正在寻找一种使用union语句的解决方案.这可能吗?

[父表]

ID     Name
-------------
1    | Bob
Run Code Online (Sandbox Code Playgroud)

[儿童表]

ID     ParentId   Name
-----------------------
1    | 1        | Jim    
2    | 1        | Ned  
Run Code Online (Sandbox Code Playgroud)

查询结果我正在寻找:

Parent_Name   Child_Name
---------------------------
Bob         | NULL <- I need this null here
Bob         | Jim
Bob         | Ned
Run Code Online (Sandbox Code Playgroud)

Stu*_*egg 7

有一个肮脏的DIRTY黑客:

SELECT
    P2.Name Parent_Name,
    C.Name  Child_Name
FROM [Parent Table] P1
    FULL OUTER JOIN [Child Table] C
        ON 1=0
    INNER JOIN [Parent Table] P2
        ON IsNull(P1.ID,C.ParentId) = P2.ID
WHERE P2.ID = *ID here*
Run Code Online (Sandbox Code Playgroud)

这应该给你想要的结果......希望如此.