Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server:Jak uzyskać wszystkie rekordy podrzędne z identyfikatorem rodzica w tabeli samoodwołującej się?

Możesz spróbować tego

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zamiana ciągu znaków rozdzielanych przecinkami na pojedyncze wiersze

  2. Jak zmienić rozmiar kolumny w SQL Server (T-SQL)

  3. Jak usunąć podwójne cudzysłowy otaczające tekst podczas importowania pliku CSV?

  4. Excel do SQL Server z Microsoft.ACE.OLEDB.12.0

  5. Jak wstawić wartości tabeli z jednej bazy danych do innej bazy danych?