У меня есть таблица в моей базе данных, в которой хранится древовидная структура. Вот соответствующие поля:
mytree (id, parentid, otherfields...)
Я хочу найти все листовые узлы (то есть любую запись, чья id
не является другой записью parentid
)
Я пробовал это:
SELECT * FROM mytree WHERE `id` NOT IN (SELECT DISTINCT `parentid` FROM `mytree`)
Но это вернуло пустой набор. Как ни странно, удаление "NOT" возвращает набор всех нелистных узлов.
Кто-нибудь может увидеть, где я ошибаюсь?
Обновление: спасибо за ответы, они все были верны и работали для меня. Я принял Дэниела, так как он также объясняет, почему мой запрос не работал (вещь NULL).