什么是mysql查询中的B.N?

时间:2017-04-07 12:20:13

标签: mysql sql

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意味着< /强>

4 个答案:

答案 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