sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server:Sådan får du alle underordnede poster givet et overordnet id i en selvrefererende tabel

Du kan prøve dette

DECLARE @Table TABLE(
        ID INT,
        ParentID INT,
        NAME VARCHAR(20)
)

INSERT INTO @Table (ID,ParentID,[NAME]) SELECT 1, NULL, 'A'
INSERT INTO @Table (ID,ParentID,[NAME]) SELECT 2, 1, 'B-1'
INSERT INTO @Table (ID,ParentID,[NAME]) SELECT 3, 1, 'B-2'
INSERT INTO @Table (ID,ParentID,[NAME]) SELECT 4, 2, 'C-1'
INSERT INTO @Table (ID,ParentID,[NAME]) SELECT 5, 2, 'C-2'


DECLARE @ID INT

SELECT @ID = 2

;WITH ret AS(
        SELECT  *
        FROM    @Table
        WHERE   ID = @ID
        UNION ALL
        SELECT  t.*
        FROM    @Table t INNER JOIN
                ret r ON t.ParentID = r.ID
)

SELECT  *
FROM    ret


  1. PostgreSQL , Vælg mellem 2 tabeller, men kun det seneste element fra tabel 2

  2. SQL-forespørgsel, der returnerer alle datoer, der ikke er brugt i en tabel

  3. Hvordan kan jeg finde den underliggende kolonne og tabelnavn for en Oracle-visning?

  4. Python 3.4.0 med MySQL-database