Таблица собственных запросов - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть таблица, которая имеет собственные отношения:

id - столбцы parentId

Мне нужен запрос, чтобы получить родительскую строку, где parentId равен нулю, но я не смог понятьправильный способ сделать это.

select * from table1 where id = parentId;

Очевидно, что это не работает, это просто даст прямой родитель.

Любая помощь

Ответы [ 2 ]

1 голос
/ 21 ноября 2011

"Получить родительскую строку, где parentId равен нулю" не имеет смысла, но в случае, если вы действительно имели в виду "получить родительскую строку до parentId равен нулю" , тогда этот рекурсив CTE должен добиться цели:

WITH cte AS (
    SELECT * FROM table1 WHERE id = 7
    UNION ALL
    SELECT table1.* FROM table1 JOIN cte ON table1.id = cte.parentId
)
SELECT * FROM cte

Возвращает строку с id = 7 и всеми ее предками рекурсивно. Замените 7 в соответствии с вашими потребностями.

0 голосов
/ 21 ноября 2011
SELECT *

FROM table1 AS A

LEFT JOIN table1 as B
  ON B.ID = A.parentID

WHERE B.parentID IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...