gpt4 book ai didi

sql - 父 - 子 sql 查询

转载 作者:行者123 更新时间:2023-12-04 07:02:36 25 4
gpt4 key购买 nike

id  parent_id
1 0
2 0
3 2
4 0
5 1
6 0

我需要一个将返回父行 (parent_id=0) 后跟其子行的查询:
  • 第一亲
  • 第一 parent 的所有 child
  • 第二个父级
  • 第二个 parent 的所有 child
  • 第三个父级
  • 第四个父级

  • 预期结果:按 id 排序
    id   parent_id
    -------------------------------------------
    1 0 (first parent)
    5 1 (all children of first parent)
    2 0 second parent
    3 2 (all children of second parent)
    4 0 third parent
    6 0 fourth parent

    我可以使用 parent 联合,然后是所有 child
    但这让我先是 parent ,然后是 child 。
    我需要 parent ,并立即需要它的 child 。

    任何人都可以帮忙吗?

    最佳答案

    这可以使用两个临时表和三个变量来完成。

    CREATE TABLE #Parents
    (
    RowId bigint identity(1,1),
    Id bigint
    )



    CREATE TABLE #Results
    (
    RowId bigint identity(1,1),
    Id bigint,
    ParentId bigint
    )



    DECLARE @Count1 bigint
    DECLARE @Count2 bigint
    DECLARE @ParentId bigint



    INSERT INTO #Parents
    SELECT Id
    FROM MyTable
    WHERE ParentId = 0
    ORDER BY Id



    SET @Count1 = 0
    SELECT @Count2 = MAX(RowId) FROM #Parents



    WHILE @Count1 < @Count2
    BEGIN
    SET @Count1 = @Count1 +1
    SELECT @ParentId = Id FROM #Parents WHERE RowId = @Count1
    INSERT INTO #Results (Id, ParentId) VALUES (@Count1, 0)
    INSERT INTO #Results (Id, ParentId)
    SELECT ID, ParentId
    FROM MyTable
    WHERE ID = @Count1
    ORDER BY Id
    END



    SELECT
    Id,
    ParentId
    FROM #Results
    ORDER BY RowId



    DROP TABLE #Results
    DROP TABLE #Parents



    关于sql - 父 - 子 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1604463/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com