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

Jak uzyskać najniższy, wspólny rodzic dla 2 wierszy w tabeli rekurencyjnej (SQL)

Kilka drobnych zmian w odpowiedzi Quassnoi i działa:

WITH
    hier1 (id, parent) AS (
    SELECT      id, parent
    FROM        table
    WHERE       id = @user1
    UNION ALL
    SELECT      id, parent
    FROM        table l, hier1 h
    WHERE       l.id = h.parent
    ),
    hier2 (id, parent) AS (
    SELECT      id, parent
    FROM        table
    WHERE       id = @user2
    UNION ALL
    SELECT      id, parent
    FROM        table l, hier1 h
    WHERE       l.id = h.parent
    )
SELECT  TOP 1 hier1.id
FROM    hier1, hier2
WHERE   hier1.id = hier2.id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Entity Framework 6 z SQL Server 2012 daje System.Data.Entity.Core.ProviderIncompatibleException

  2. Jak podstawić ciąg, jeśli rekord ma wartość NULL w T-SQL?

  3. Jak utworzyć funkcję SQL Server, aby połączyć wiele wierszy z podzapytania w jedno pole rozdzielane?

  4. SQL Server:czy muszę używać instrukcji GO między partiami?

  5. Jakie kolumny generalnie tworzą dobre indeksy?