Я пишу код для попадания в древовидную структуру, которая сохраняется в базе данных MySQL, каждый узел хранит идентификатор своего родителя или NULL, если это корень дерева. В ходе запроса к нему, чтобы попытаться получить все конечные узлы, я заметил кое-что странное.
А именно, этот запрос не дает результатов:
SELECT *
FROM tree_table
WHERE node_id NOT IN(SELECT parent_node_id FROM tree_table)
в то время как этот дает результаты, я после:
SELECT *
FROM tree_table
WHERE node_id NOT IN(
SELECT node_id
FROM tree_table
WHERE node_id IN(SELECT parent_node_id FROM tree_table))
Кажется, это НЕ доставляет мне неприятности. Это что-то вроде порядка операций или чего-то подобного, что я неправильно помню?