Найдите вершины в иерархическом дереве

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

15
задан nickf 26 October 2015 в 20:34
поделиться

4 ответа

Ваш запрос не работал, потому что подзапрос включает NULL. Следующая небольшая модификация работает на меня:

SELECT * FROM `mytree` WHERE `id` NOT IN (
    SELECT DISTINCT `parentid` FROM `mytree` WHERE `parentid` IS NOT NULL)
21
ответ дан 1 December 2019 в 02:20
поделиться
SELECT * FROM mytree AS t1
LEFT JOIN mytree AS t2 ON t1.id=t2.parentid
WHERE t2.parentid IS NULL
4
ответ дан 1 December 2019 в 02:20
поделиться

Никакая подсказка, почему Ваш запрос не работал. Вот идентичная вещь в левом синтаксисе внешнего объединения - пробуют его этот путь?

select a.*
from mytree a left outer join
     mytree b on a.id = b.parentid
where b.parentid is null
6
ответ дан 1 December 2019 в 02:20
поделиться

Выберите * из mytree, где идентификатор не в (Выбирают отличный порожденный из mytree, где порождено, не является пустым)

http://archives.postgresql.org/pgsql-sql/2005-10/msg00228.php

0
ответ дан 1 December 2019 в 02:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: