我在写一个查询,找到该节点的值排序表BST节点类型不工作。 表,BST,有两列N和P,其中N表示在BST节点的值,P是N的父 说,BST具有以下记录: BST Table“NOT IN”预期
我成功执行该查询如下:
SELECT n,CASE
WHEN p IS NULL THEN 'Root'
WHEN n IN (SELECT DISTINCT p FROM BST) THEN 'Inner'
ELSE 'Leaf'
END
FROM BST
ORDER BY n;
而不是用 “IN”,当我尝试使用 “NOT IN” 相同的查询下面给出不过:
SELECT n,CASE
WHEN p IS NULL THEN 'Root'
WHEN n NOT IN (SELECT DISTINCT p FROM BST) THEN 'Leaf'
ELSE 'Inner'
END
FROM BST
ORDER BY n;
如预期没有奏效。为什么这样?
不是和NULL的可能会让你大吃一惊! (这就是为什么我推荐'NOT EXISTS'的原因。) – jarlh
“*它没有按预期工作。*” - 那么你期望什么? –
@a_horse_with_no_name我期望它给出与使用“IN”相同的输出 – PiyushM