SELECT N, IF(P IS NULL,'Root',IF((SELECT COUNT(*) FROM BST WHERE P=B.N)>0,'Inner','Leaf'))
FROM BST AS B
ORDER BY N;
这里N和P是列名,其中N是节点,P是父,BST是表的名称,上面的查询是查找BST的节点类型但是我无法理解什么P = BN意味着< /强>
答案 0 :(得分:2)
首先,让我从saing开始我真的希望这些不是您正在使用的实际名称。如果它们是,那么你的未来将成为一个巨大的帮助,并用实际描述列和表所包含的数据的可读名称替换它们。
话虽如此,B.N
是外部查询行中的N
列,因为它使用B
作为表名的别名。
在子查询的where
子句中,您将P
的值与主查询中的N
值进行比较。此子查询将对主查询中的每一行运行一次,因此对于每一行,您将获得N
是某个节点的父级的行数。
答案 1 :(得分:1)
在
WHERE P=B.N
P
是内部BST
语句的SELECT
的“父”列。
B.N
是指外部 N
声明中引用的BST
表格的SELECT
(“节点”)列。< / p>
条款
FROM BST AS B
创建B
作为外部BST
的别名。
答案 2 :(得分:0)
“从BST作为B”定义B将用作此查询的表BST的变量,N必须是该表中的列,因此:
表BST中列N的单元格值
答案 3 :(得分:0)
对于来自column N
的{{1}}中的任何值,首先要查找当{P}中的值等于N中的值时table B
有多少记录,如果总数更大小于0,将其填充为column P
,否则为Inner